Runnig JAR-зависимый файл класса Java - PullRequest
0 голосов
/ 09 февраля 2012

java.lang.NoClassDefFoundError

У меня есть Java-программа, которая зависит от двух файлов JAR.я компилирую программу, используя команду:

javac -classpath jar1.jar:jar2.jar myprog.java, и она успешно компилируется.

Но когда я пытаюсь запустить программу с помощью команды: java -cp jar1.jar:jar2.jar myprog, она выдает java.lang.NoClassDefFoundError.пожалуйста, помогите, где я не прав?

Я использую Ubuntu 10.04.

Фактическая ошибка:

Exception in thread "main" java.lang.NoClassDefFoundError: userapps/SelectionTask_classes/SelectionTask
Caused by: java.lang.ClassNotFoundException: userapps.SelectionTask_classes.SelectionTask
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: userapps/SelectionTask_classes/SelectionTask. Program will exit.

где SelectionTask - мой файл класса, сгенерированный после успешной компиляции.

Ответы [ 3 ]

1 голос
/ 09 февраля 2012

Убедитесь, что текущий каталог также находится в пути к классам.Попробуйте запустить с:

java -cp .:jar1.jar:jar2.jar myprog

, если ваш скомпилированный файл класса myprog.class находится в текущем каталоге.

(Предполагается, что ваша программа отсутствует в пакете).

0 голосов
/ 09 февраля 2012

Посмотрите на ошибку, она жалуется на то, что не может найти "userapps.SelectionTask_classes.SelectionTask", который намекает на то, что последняя запись в вашем classpath неверно указана.Теперь предположим, что указанные вами JAR-файлы имеют следующую структуру каталогов:

. / Hadoop-0.20.1-core.jar

. / Lib / hadoopdb.jar

. / Userapps / SelectionTask_classes /

Вы должны выполнить:

java -cp hadoop-0.20.1-core.jar:lib/hadoopdb.jar:userapps/SelectionTask_classes/ myprog
0 голосов
/ 09 февраля 2012

Вам необходимо добавить каталог, в котором находится файл вашей скомпилированной Java-программы (* .class). Если он находится в текущем каталоге, вы можете запустить его следующим образом (обратите внимание на «.», Который обозначает текущий рабочий каталог):

java -cp .:jar1.jar:jar2.jar myprog
...