java.lang.NoClassDefFoundError:JBoss AS 7中的org / apache / commons / codec / DecoderException

时间:2013-03-22 11:59:12

标签: http jboss7.x classnotfoundexception apache-commons-codec

我在部署之前使用在不同服务器上运行的应用程序的.war文件来测试JBoss AS 7。

当我尝试通过应用程序登录数据库时出现此错误:

SEVERE [] (http--0.0.0.0-8080-4) java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException
java.lang.ClassNotFoundException: org.apache.commons.codec.DecoderException from [Module "deployment.app.war:main" from Service Module Loader]
      at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
      at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
      at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
      at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
      at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
      at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220)

在某些论坛中,他们建议添加commons-codec jar,但我已经在JBoss中使用了,对吧? (在这里:jboss-as-7.1.1.Final/modules/org/apache/commons/codec/main/commons-codec-1.4.jar

OSGi没有激活,坦率地说我不知道​​它服务的目的是什么,但是当我试图激活它时它会因为我的战争而混乱,因为它无法部署......

我有JDK,但如果有任何帮助,则没有JRE。

2 个答案:

答案 0 :(得分:0)

JBoss AS 7默认不使用OSGi进行模块化类加载。它使用JBoss模块,因此这与OSGi无关。

如果你想使用JBoss AS 7提供的commons-codec,你需要做的就是部署add a dependency

答案 1 :(得分:0)

您的artefact类不会自动显示模块。你有三种可能性:

  1. 在standalone.xml中定义全局模块 http://javahowto.blogspot.de/2012/09/how-to-create-global-modules-in-jboss.html 您在Jboss上部署的所有文物都将使用此模块。
  2. 将它放入你的战争文物中,进入lib文件夹。你可以用Maven做到这一点。
  3. 在Manifest中定义显式依赖项。 https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7 Section Dependencies:Manifest Entries