Я хотел бы использовать JDOM в проекте Webapp.Это работает просто отлично.Но теперь я хочу добавить некоторые вещи, используя XPath, но если я пытаюсь работать с XPath, я просто получаю исключение:
com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Uncaught exception created in one of the service methods of the servlet MyServlet in application MyProjectEAR. Exception created : java.lang.NoClassDefFoundError: org.jaxen.BaseXPath
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:72)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:134)
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:136)
at org.jdom.xpath.XPath.newInstance(XPath.java:126)
at org.jdom.xpath.XPath.selectNodes(XPath.java:337)
[..]
Caused by: java.lang.ClassNotFoundException: org.jaxen.BaseXPath
at java.net.URLClassLoader.findClass(URLClassLoader.java:421)
at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:150)
at java.lang.ClassLoader.loadClass(ClassLoader.java:652)
at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:90)
at java.lang.ClassLoader.loadClass(ClassLoader.java:618)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:540)
at java.lang.ClassLoader.loadClass(ClassLoader.java:618)
... 35 more
jaxen.jar находится в моем classpath, а org.jaxenКласс .BaseXPath там просто отлично.Почему Websphere не находит его?Он работает со всеми остальными библиотеками, которые у меня есть.При поиске я нашел это , где кто-то говорит, что у него где-то конфликтующая версия, и я должен убедиться, что файлы jar из каталога моего веб-приложения имеют приоритет.В eclise 'Built Path Configuration я установил библиотеки веб-приложений выше библиотеки WebSphere (только каталог src теперь выше библиотек веб-приложений), но это ничего не изменило.К сожалению, я не совсем понял ту часть о EAR, которая кажется важной ...?
Обновление: тем временем это дало мне новую подсказку.В Консоли администрирования WebSphere я нашел путь к классам и список всех jar-файлов, которые рассматриваются загрузчиками классов.Их довольно много, и я искал их с помощью волшебства grep и unzip -l и понял, что файл /opt/ibm/WebSphere/PortalServer/wcm/prereq.wcm/wcm/shared/app/jdom.jar содержит jdom (без джексена).Может быть, этот jdom jar загружен, но jaxen в несовместимой версии загружен из моего каталога lib?
Кроме того, я нашел в консоли администрирования WebSphere настройку «родитель первый / последний» для моего приложения, но все отображается серым цветомиз!Я не могу переключиться на родительский последний: - (.
Что я могу сделать, чтобы найти и исправить проблему?