1

我正在使用在不同服务器上运行的应用程序的 .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,但我已经在 J​​Boss 中拥有它,对吧?(在这里jboss-as-7.1.1.Final/modules/org/apache/commons/codec/main/commons-codec-1.4.jar:)

OSGi 没有被激活,坦率地说,我不知道它的用途是什么,但是当我尝试激活它时,它会与我的战争混淆,因为它无法部署......

我有 JDK,但如果有帮助的话,我没有 JRE。

4

2 回答 2

0

您的人工制品类不会自动看到模块。你有三种可能:

  1. 在你的standalone.xml中定义一个全局模块 http://javahowto.blogspot.de/2012/09/how-to-create-global-modules-in-jboss.html 这个模块将被你部署的所有工件使用老板。
  2. 将其放入您的战争文物中,放入 lib 文件夹。你可以用 Maven 做到这一点。
  3. 在 Manifest 中定义显式依赖项。https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7 部分依赖:清单条目
于 2013-04-30T21:11:36.773 回答
0

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

如果您想使用 JBoss AS 7 提供的 commons-codec,您需要做的是为您的部署添加一个依赖项。

于 2013-03-22T18:57:29.087 回答