2012-06-20 5 views
0

Я пытаюсь скомпилировать и запустить следующий класс:Исключение в потоке "основного" java.lang.NoClassDefFoundError: орг/dom4j/IO/SAXReader

import org.dom4j.io.SAXReader; 
import org.dom4j.Document; 
import org.dom4j.Element; 

import java.net.URL; 
import java.net.Authenticator; 
import java.net.PasswordAuthentication; 
import java.util.List; 

/** 
* Java client program to demonstrate how to access Hudson remote API. 
* 
* @author Kohsuke Kawaguchi 
* @see http://hudson.gotdns.com/wiki/display/HUDSON/Remote+access+API 
*/ 
public class Main { 
    @SuppressWarnings("unchecked") 
    public static void main(String[] args) throws Exception { 
     // every Hudson model object exposes the .../api/xml, but in this example 
     // we'll just take the root object as an example 
     URL url = new URL("http://deadlock.netbeans.org/hudson/api/xml"); 

     // if you are calling security-enabled Hudson and 
     // need to invoke operations and APIs that are protected, 
     // consult the 'SecuredMain" class 
     // in this package for an example using HttpClient. 

     // read it into DOM. 
     Document dom = new SAXReader().read(url); 

     // scan through the job list and print its status 
     for(Element job : (List<Element>)dom.getRootElement().elements("job")) { 
     //for(Element job : (java.util.List<org.dom4j.Element>)dom.getRootElement().elements("job")) { 
      System.out.println(String.format("Name:%s\tStatus:%s", 
       job.elementText("name"), job.elementText("color"))); 
     } 
    } 
} 

я скомпилировать его с помощью:

javac -cp /usr/share/java/dom4j.jar Main.java 

Но когда я пытаюсь запустить его, я получаю исключение:

$ java Main

Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader at Main.main(Main.java:31) Caused by: java.lang.ClassNotFoundException: org.dom4j.io.SAXReader at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 1 more

Если посмотреть на файл фляги:

jar tvf /usr/share/java/dom4j.jar | grep SAXReader*

1061 Mon Jan 25 09:34:34 EST 2010 org/dom4j/io/SAXReader$SAXEntityResolver.class 13170 Mon Jan 25 09:34:34 EST 2010 org/dom4j/io/SAXReader.class

«Отсутствующие» классы присутствуют в JAR. Любая идея о том, как разрешить это?

+0

попробуйте добавить точку с запятой после пути к классам decalration в команде – MozenRath

ответ

1

Вы должны использовать один и тот же путь к классу во время работы, а также

java -cp /usr/share/java/dom4j.jar;. Main 
+0

, когда я использовать синтаксис так же, как вы предлагаете, я получаю: Java -cp /usr/share/java/dom4j.jar ;. Main Использование: java [-options] class [args ...] (для выполнения класса) или java [-options] -jar jarfile [args ...] (для выполнения файла jar) .. ........ -bash: Main: Нет такого файла или каталога – kamal

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

  • Нет связанных вопросов^_^