Java 如何在wildfly 10和EAR项目中使用httpcomponents?

Java 如何在wildfly 10和EAR项目中使用httpcomponents?,java,jakarta-ee,jboss,httpclient,wildfly,Java,Jakarta Ee,Jboss,Httpclient,Wildfly,我无法让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.

我无法让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
我看了,但是这里描述的jboss部署结构.xml不起作用

我在POM文件中尝试了各种各样的组合,但我没有成功

类在构造时失败,因此import语句会导致问题

我无法访问该模块,也无法将所需的jar文件部署到ear lib目录中

编辑:我正在使用JBossDeveloperStudio。我似乎在这方面取得了一些进展,如果我手动将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插件以使用它:

<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>
maven-ejb插件
2.5.1
3.1
${basedir}/src/main/resources/META-INF/manifest.mf

这完全取决于哪些代码需要它。如果不声明“完整”应用程序,您提到的jboss-deployment-structure.xml将无法工作。
也许您应该在需要它的jar/war中添加一个带有条目依赖项的清单:org.apache.httpcomponents。

t看一看

这一切都取决于哪些代码需要它。如果不声明“完整”应用程序,您提到的jboss-deployment-structure.xml将无法工作。
也许您应该在需要它的jar/war中添加一个带有条目依赖项的清单:org.apache.httpcomponents。

t查看一下

您的EAR文件中安装了哪些Http组件JAR?在EAR/lib目录中?您有httpclient和httpcore吗?您好@SteveC,请参阅编辑。您的部署包含jboss modules.jar?没有。我认为jbstudio/eclipse在其部署中使用它。请显示您正在使用的pom.xml文件
jboss deployment structure.xml
仅在您想使用WildFly/JBossAS附带的Http组件时才有用,我不推荐使用。第一步是获得应用程序的maven命令行构建,以创建正确的人工制品。之后,我们可以处理JBossDeveloperStudio问题——如果它们仍然存在的话?在EAR/lib目录中?您有httpclient和httpcore吗?您好@SteveC,请参阅编辑。您的部署包含jboss modules.jar?没有。我认为jbstudio/eclipse在其部署中使用它。请显示您正在使用的pom.xml文件
jboss deployment structure.xml
仅在您想使用WildFly/JBossAS附带的Http组件时才有用,我不推荐使用。第一步是获得应用程序的maven命令行构建,以创建正确的人工制品。在那之后,我们可以处理JBossDeveloperStudio的问题——如果它们仍然存在的话。好的,这是很好的信息。舱单似乎起作用了。好的,这是个好消息。舱单似乎起作用了。