0

我想在 Webapp 项目中使用 JDOM。这工作得很好。但是现在我想使用 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 在我的类路径中,而 org.jaxen.BaseXPath 类就在那里。为什么 Websphere 找不到它?它适用于我在那里的所有其他库。谷歌搜索时我发现了这个,有人说他在某个地方有一个冲突的版本,我应该确保我的网络应用程序目录中的 jar 具有优先权。在 ecrise 的内置路径配置中,我在 WebSphere 库上方设置了 Web 应用程序库(现在只有 src 目录位于 Web 应用程序库上方),但这并没有改变任何东西。不幸的是,我并没有真正理解似乎很重要的关于 EAR 的部分......?

更新:与此同时,给了我一个新的线索。我在 WebSphere 的管理控制台上找到了类路径和一个包含类加载器考虑的所有 jar 的列表。这些是相当多的,我用一点 grep 和 unzip -l 魔法搜索了它们,发现文件 /opt/ibm/WebSphere/PortalServer/wcm/prereq.wcm/wcm/shared/app/jdom.jar 包含 jdom (没有 jaxen 的东西)。所以也许这个jdom jar被加载了,但是不兼容版本的jaxen是从我的lib目录加载的?

此外,我在 WebSphere 的管理控制台中找到了我的应用程序的“父级第一个/最后一个”设置,但一切都是灰色的!我不能最后切换到父母:-(。

我该怎么做才能找到并解决问题?

4

0 回答 0