【发布时间】:2017-05-16 01:38:32
【问题描述】:
我在 WildFly 服务器中遇到类加载问题。我已经在 WildFly 独立服务器中部署了我的 EAR 文件。并通过jboss-deployment-structure.xml声明依赖。
除了这个类之外,一切似乎都运行良好:
Caused by: java.lang.ClassNotFoundException: com.sun.el.ExpressionFactoryImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at javax.el.FactoryFinder.newInstance(FactoryFinder.java:88)
我试图通过将org.glassfish.javax.el 模块添加到jboss-deployment-structure.xml 来解决这个问题:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.glassfish.javax.el" export= "TRUE"/>
<module name="xxxxxxxx" export= "TRUE"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
我还尝试通过将其添加到配置文件中的global-modules 来解决。但我仍然遇到同样的错误。
<global-modules>
<module name="org.glassfish.javax.el" slot="main"/>
</global-modules>
我尝试通过在 org.jboss.classloader 记录器类别上启用 TRACE 来记录类加载,但没有运气。
然后我启用了从 JAVA_OPTS (-verbose:class) 到控制台的类加载,但在日志中找到了此类。事实上,我在日志中没有找到jboss-deployment-structure.xml 中提到的许多罐子。
有人可以帮我解决这个问题吗?提前谢谢!
【问题讨论】:
-
您能否将
jboss-deployment-structure.xml的相关部分以及您在global-modules中尝试的内容包括在内? -
@TT。添加了相关部分
-
您通常不必与
jboss-deployment-structure.xml或global-modules混淆。您试图解决的原始类加载问题是什么? -
@SteveC com.sun.el.ExpressionFactoryImpl 类是实际问题
-
你有没有在你的代码中直接引用过这个类?如果没有,您是否在应用程序中包含了自己的 JSF 实现(而不是使用 WildFly 提供的)? IE。你 EAR 的任何地方都有 mojarra 罐子吗?
标签: java jboss classloader wildfly wildfly-9