Класс в buildpath-jar все еще не найден

Я разрабатываю плагин 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

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

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


person jau    schedule 16.04.2009    source источник


Ответы (3)


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

person jau    schedule 16.04.2009

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

person Matt K    schedule 16.04.2009

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

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

person Ridcully    schedule 16.04.2009
comment
NoClassDefFoundError будет выброшен, если скомпилированный код ссылается на класс, которого нет в пути к классам. ClassNotFoundException будет выброшено, если при попытке использовать отражение для создания экземпляра класса класс с таким именем не может быть найден. - person akf; 18.12.2009