WildFly 9.0.2类加载问题

时间:2017-01-01 19:56:42

标签: java jboss classloader wildfly wildfly-9

我在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中提到的许多罐子。

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

1 个答案:

答案 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.E​​xpressionFactoryImpl,你错过了el-impl jar

<dependency>
  <groupId>org.glassfish.web</groupId>
  <artifactId>el-impl</artifactId>
  <version>2.2</version>
  <scope>test</scope>
</dependency>