Eap 6.3 resteasy客户端:org.jboss.resteasy.client.ClientRequest ClassNotFoundException

时间:2016-01-11 16:04:04

标签: jboss resteasy jboss-eap-6

我在EAP 6.3上开发了一个应用程序。我需要调用一个休息服务,所以我使用了这样的代码:

ClientRequest request = new ClientRequest(URL);
...
request.body(MediaType.APPLICATION_JSON, input);
... 
ClientResponse<String> response = request.post(String.class);
...

在我的pom中导入了这个bom:

<dependency>
    <groupId>org.jboss.bom.eap</groupId>
    <artifactId>jboss-javaee-6.0-with-resteasy</artifactId>
    <version>6.3.0.GA</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

并且我使用提供的范围定义了依赖项:

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <scope>provided</scope>
</dependency>

不幸的是,运行前面的代码我得到了这个错误:

...
Caused by: java.lang.ClassNotFoundException: org.jboss.resteasy.client.ClientRequest from [Module "deployment.ats-ear.ear.ats-web.war:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.3.Final-redhat-1]
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.3.Final-redhat-1]
    ... 87 more

modules \ system \ layers \ base \ org \ jboss \ resteasy \ resteasy-jaxrs \ main 中查看服务器实际上有jar resteasy-jaxrs-2.3.8。 Final-redhat-3.jar 包含类: org.jboss.resteasy.client.ClientRequest

我不知道我做错了什么......我需要在 jbooss-deployment-structure.xml 中指定一些内容吗?

如果我将resteasy-jaxrs的范围设置为编译,那么everthing工作正常,但我认为将一个已存在于服务器上的库放在我耳边是个好主意。

1 个答案:

答案 0 :(得分:2)

我通过在 jboss-deployment-structure.xml 中添加适当的模块解决了这个问题:

<deployment>
    <dependencies>
        ....
        <module name="org.jboss.resteasy.resteasy-jaxrs" export="true" meta-inf="export" slot="main"/>
        <module name="org.jboss.resteasy.resteasy-jackson-provider" export="true" meta-inf="export" slot="main"/>
    </dependencies>
</deployment>

<sub-deployment name="ats-web.war">
    <dependencies>
        ...
    </dependencies>
</sub-deployment>