使用-cp或-classpath手动设置CLASSPATH不能按预期方式工作

时间:2010-03-05 15:19:58

标签: java jar classpath

MyClassWithMainMethod.java使用someJar.jar的类。

如果我打电话:

java -cp someJar.jar MyClassWithMainMethod

我得到例外:

Exception in thread "main" java.lang.NoClassDefFoundError: MyClassWithMainMethod
Caused by: java.lang.ClassNotFoundException: MyClassWithMainMethod
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)

但是当我手动将CLASSPATH设置为我的jar时

export CLASSPATH=:/path/to/someJar.jar

它可以调用

java MyClassWithMainMethod

我做错了什么?

1 个答案:

答案 0 :(得分:7)

怎么样?
java -cp /path/to/someJar.jar MyClassWithMainMethod

如果你没有给Java提供jar文件的完整路径,你怎么期望它会找到它?

好的,您给“-cp”的参数与CLASSPATH变量使用的相同 - 当您执行此操作时会发生什么:

java -cp .:someJar.jar MyClassWithMainMethod
相关问题