Ручная настройка CLASSPATH с -cp или -classpath не работает должным образом - PullRequest
2 голосов
/ 05 марта 2010

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 на банку

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

работает, звонит

java MyClassWithMainMethod

Что я делаю не так?

1 Ответ

7 голосов
/ 05 марта 2010

А как же

java -cp /path/to/someJar.jar MyClassWithMainMethod

Если вы не дадите Java полный путь к файлу jar, как вы ожидаете, что он найдет его?

Хорошо, аргумент, который вы даете "-cp", - это то же самое, что вы используете с переменной CLASSPATH - что происходит, когда вы делаете это:

java -cp .:someJar.jar MyClassWithMainMethod
...