4

我有一点点 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通常会在您的类路径未指向正确位置时发生。但是由于我的代码可以编译,我不明白为什么它不应该执行。有任何想法吗?

4

2 回答 2

4

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

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

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

所以命令脚本看起来像这样:

java -cp <SEMICOLON_SEPARETE_LIST_OF_LOCATIONS> qualified.path.to.MainClass <ARGUMENTS>
于 2014-05-27T13:23:00.893 回答
3

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

java -cp .;commons-math.jar Test
于 2014-05-27T13:08:22.993 回答