Класс в buildpath-jar до сих пор не найден - PullRequest
0 голосов
/ 16 апреля 2009

Я разрабатываю плагин eclipse rcp и запускаю NoClassDefFoundError

Exception in thread "Thread-7" java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder  
    at org.geonames.WebService.search(WebService.java:783)  
    at geo.GeocoderGeonames$SearchThread.run(GeocoderGeonames.java:119)  
Caused by: java.lang.ClassNotFoundException: org.jdom.input.SAXBuilder  
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:483)  
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:399)  
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:387)  
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)  
    at java.lang.ClassLoader.loadClass(Unknown Source)  
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)  
    ... 2 more

Класс, который предположительно не может быть найден, находится в банке, которую я добавил в buildpath. Я не получаю никакой ошибки компиляции и т. Д., Только это исключение, когда запущенное приложение вводит код, где нужен этот класс ...

Есть ли какое-то другое место, куда мне нужно добавить банку

Ответы [ 3 ]

1 голос
/ 16 апреля 2009

После прочтения этот добавил банку в MANIFEST.MF, что решило проблему. Насколько я понимаю, eclipse запускает несколько загрузчиков классов, которые видят только то, что MANIFEST.MF говорит им увидеть, и игнорируют путь сборки ...

0 голосов
/ 16 апреля 2009

По нашему опыту NoClassDefFoundError может иногда означать, что найдено более одной версии класса, так как есть также ClassNotFoundException, который обычно выдается, если класс не может быть найден.

Другой причиной в вашем случае (анализатор XML) может быть что-то с одобренными классами. Вы напрямую импортируете классы jdom или что-то вроде org.w3c ...? Если да, взгляните на систему «одобренных классов» Java, с которой я недавно столкнулся.

0 голосов
/ 16 апреля 2009

Как у вас работает плагин? Вам может понадобиться добавить JAR к пути к классу в аргументах VM.

...