我对这里发生的事情感到困惑。我不断收到以下异常:
Caused by: java.lang.ClassNotFoundException: org.jaxen.JaxenException
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 51 more
但是,该类文件位于我的耳朵中,也位于我的ejb list 和耳朵的 list 文件的'Class-Path'属性中。我需要在其他地方添加jaxen jar ,以使其被其他 jar 中的耳朵看到吗?耳朵里的所有 jar 都共享相同的类路径吗?
编辑#1
也有这个:
Caused by: java.lang.NoClassDefFoundError: org/jaxen/JaxenException
at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)
at org.dom4j.tree.AbstractNode.selectNodes(AbstractNode.java:164)
编辑#2
我正在部署到glassfish v3.1,并且lib jar位于ear文件的根目录,如下所示:
-foo.ear
--\META-INF
--lib1.jar
--lib2.jar
--jaxen-1.1.1.jar
编辑#3
我曾尝试将其部署到GF的另一个版本,但它似乎可以正常工作,我认为这可能是我使用的版本中的错误。我打开了一个论坛线程here。
编辑#4
我在应用程序服务器的lib目录中有dom4j,但在服务器上却没有jaxen。添加jaxen lib可以解决此问题。
最佳答案
您需要服务器 lib文件夹中的jaxen jar
http://jaxen.codehaus.org/releases.html