【问题标题】:Commons Math: java.lang.ClassNotFoundException公共数学:java.lang.ClassNotFoundException
【发布时间】:2014-05-27 13:02:24
【问题描述】:

我有一点点 Java 代码:

import java.io.*;
import org.apache.commons.math3.linear.*;

class Test
{
    public static void main(String[] args){
        RealVector alpha= MatrixUtils.createRealVector(new double[10]);
        System.out.println(alpha.getEntry(0));      
    }
}

我可以使用javac Test.java -cp .;commons-math.jar成功编译它 但是当我尝试使用java Test -cp .;commons-math.jar 运行它时,它会抛出这个:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/ma
th3/linear/MatrixUtils
        at Test.main(Test.java:9)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.linear.Mat
rixUtils
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more

根据我所做的谷歌搜索,ClassNotFoundException 通常在您的类路径未指向正确位置时出现。但是由于我的代码可以编译,我不明白为什么它不应该执行。有什么想法吗?

【问题讨论】:

  • class文件和jar应该在同一目录下
  • 试试java -cp "/path/to/commons-math.jar" Test

标签: java classnotfoundexception apache-commons-math


【解决方案1】:

如果您在命令窗口中键入 java,您实际上会了解如何设置命令以正确启动类文件:

用法:java [-options] 类 [args...] (执行一个类)或 java [-options] -jar jarfile [args...] (执行一个jar文件)

“-cp”是一个选项,所以它放在类名之前

所以一个命令脚本应该是这样的:

java -cp <SEMICOLON_SEPARETE_LIST_OF_LOCATIONS> qualified.path.to.MainClass <ARGUMENTS>

【讨论】:

  • 我觉得很傻。非常感谢。 (也感谢梅林)
【解决方案2】:

我刚刚重现了您的问题,更改顺序为我解决了问题。

java -cp .;commons-math.jar Test

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多