【发布时间】:2016-04-27 23:29:34
【问题描述】:
我无法让 org.apache.httpcomponents 在 Wildfly 10 中工作。我没有尝试 9。我得到的错误基本上是。
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest from [Module "deployment.opca-ear.ear.opca-ejb.jar:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93)
... 185 more
我查看了Wildfly 8.1 ClassNotFound org.apache.http.conn.ClientConnectionManager,但jboss-deployment-structure.xml 描述这里没有工作。
我尝试了 POM 文件中的各种组合,但我没有得到任何结果。
类在构造时失败,因此导入语句导致问题。
我无法访问该模块或将所需的 jar 文件部署到 ear lib 目录中。
编辑:我正在使用 JBoss Developer Studio。我似乎取得了一些进展,如果我手动将 opca-ear.ear 文件复制到部署目录,那么 httpclient 和 httpcore jar 将被部署,但如果我从 jbstudio 部署它们不会,所以我猜这是一个问题jboss-modules.jar 部署。无法从 jbstudio 调试/部署会很痛苦。 Httpclient 和 httpcore 在我的 lib 目录下的 opca-ear.ear 文件中,以及 ejb/target/opca-ear/lib 目录下。
如果我能得到类似jboss-deployment-structure.xml 的东西,或者可能是清单文件中的一个条目,这样wildfly 就可以为客户端提供对org.apache.httpcomponents 资源的访问权限,那么我就不必担心jboss-modules.jar。
解决方案:如接受的答案中所述,jboss-deployment-structure.xml 仅适用于“完整”部署,因此我使用了 manifest.mf 条目
Dependencies: org.apache.httpcomponents
并更新了 maven-ejb-plugin 以使用它:
<artifactId>maven-ejb-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<!-- Tell Maven we are using EJB 3.1 -->
<ejbVersion>3.1</ejbVersion>
<archive>
<manifestFile>${basedir}/src/main/resources/META-INF/manifest.mf</manifestFile>
</archive>
</configuration>
【问题讨论】:
-
您的 EAR 文件中的 Http Components jar 安装在哪里?在 EAR/lib 目录中?你那里有 httpclient 和 httpcore 吗?
-
嗨@SteveC,请参阅编辑。
-
您的部署包含 jboss-modules.jar?
-
没有。我认为 jbstudio/eclipse 使用它来做它的部署。
-
请显示您正在使用的 pom.xml 文件。
jboss-deployment-structure.xml仅在您想使用 WildFly/JBossAS 附带的 Http 组件时才有用——我不推荐这样做。第一步是获取应用程序的 maven 命令行构建,以创建正确的人工制品。之后我们可以处理 JBoss Developer Studio 问题——如果它们仍然存在的话。
标签: java jakarta-ee jboss httpclient wildfly