WildFly 9.0.2 类加载问题



我在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>

我试图通过在记录器类别上启用 TRACE 来记录类加载org.jboss.classloader但没有运气。

然后我启用了从JAVA_OPTS(-verbose:class)到控制台的类加载,但是在日志中找到了这个类。事实上,我在日志的jboss-deployment-structure.xml中没有找到很多罐子。

有人可以帮我解决这个问题吗?提前谢谢你!

你错过了 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>

最新更新