为什么添加类路径导致找不到主类?

时间:2015-04-16 03:42:21

标签: java

尝试运行Java类时没有提供正确的类路径,我得到NoClassDefFoundError。但是当添加所需的类路径时,java抱怨它无法找到main方法。如果您对此处发生的事情有任何了解,请指出我正确的方向。谢谢

$ java MyClass
Exception in thread "main" java.lang.NoClassDefFoundError: cern/colt/matrix/DoubleMatrix1D
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
    at java.lang.Class.getMethod0(Class.java:2856)
    ... 6 more

$ java -cp resources/colt.jar MyClass
Error: Could not find or load main class MyClass

2 个答案:

答案 0 :(得分:1)

假设MyClass不在包中,您需要类似(在Windows上)

java -cp resources/colt.jar;. MyClass

或(否则)

java -cp resources/colt.jar:. MyClass

还包括当前目录。或者,您可以设置CLASSPATH环境变量。

在Windows上,

set "CLASSPATH=resources/colt.jar;."

否则就像(取决于你的shell)

export CLASSPATH="resources/colt.jar:."

然后

java MyClass

答案 1 :(得分:1)

尝试将当前目录包含在类路径中。通常我们在classpath中添加新的jar:这是:

java -cp %CLASSPATH%;resource/colt.jar MyClass

或在Linux上:

java -cp $CLASSPATH:resource/colt.jar MyClass

另外你也可以添加。

,即类路径的currrent目录。