我在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
中提到的许多罐子。
有人可以帮我解决这个问题吗?提前谢谢!
答案 0 :(得分:0)
你错过了el-api依赖,你可以添加以下jar
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
或
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
<scope>test</scope>
</dependency>
然后你遇到了ClassNotFoundException:com.sun.el.ExpressionFactoryImpl,你错过了el-impl jar
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>