2013-11-13 3 views
0

Я компилировать класс успешно, как это:Проблема с классом Java загрузчиком

[email protected]:~/zookeeper-3.4.5$ javac -cp "zookeeper-3.4.5.jar" org/zookeeper/Worker.java 

Но когда я затем попытаться запустить его загрузчик класса Java не может найти класс:

[email protected]:~/zookeeper-3.4.5$ java -cp "zookeeper-3.4.5.jar" org.zookeeper.Worker 
Exception in thread "main" java.lang.NoClassDefFoundError: org/zookeeper/Worker 
Caused by: java.lang.ClassNotFoundException: org.zookeeper.Worker 
    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: org.zookeeper.Worker. Program will exit. 

Здесь находятся соответствующие части Worker.java

package org.zookeeper; 
... 

class Worker implements Watcher { 

... 

    public static void main(String[] args) throws Exception { 
     Worker worker = new Worker(args[0], args[1],args[2]); 
     worker.processRequest(); 
    } 

Почему загрузчик классов не загружает класс?

+0

ли '-3.4.5.jar' зоопарка на самом деле содержит класс? – Reimeus

+0

@Reimeus no. Я написал рабочий класс и сохранил/скомпилировал его в org/zookeeper. Но класс Worker зависит от вещей в zookeeper-3.4.5.jar – bernie2436

ответ

2

При указании -cp флага, текущий каталог не используется автоматически в пути к классам, так должно быть добавлено в явном виде:

java -cp zookeeper-3.4.5.jar:. org.zookeeper.Worker 
0

Почему процитировать банку в любом случае?

В любом случае, вы все равно должны ваших классов по классам, например,

java -cp .:zookeeper-3.4.5.jar org.zookeeper.Worker 
+0

Я цитирую банку, потому что рабочий зависит от классов в jar для запуска и java должен их найти. Верный? – bernie2436

+0

@ abe3 Вот почему вы * нуждаетесь в банке, я спросил, почему вы * цитировали * банку. –

+0

Я предполагаю, что у меня есть привычка класть классы в кавычки. Я полагаю, что это не является несущественным? – bernie2436

Смежные вопросы