实现REST客户端

时间:2017-06-17 18:05:27

标签: java rest tomcat jersey

我在Tomcat 8上运行了一个Web应用程序(Windows 10,JRE 1.8.0_111) 实现REST客户端以与第三方REST服务进行通信 (ADLNET xAPI LRS)

当我最近在另一台服务器上部署该WAR文件时(CentOS,Tomcat) 8,Java 1.8.0.11)应用程序给出了一个ClassNotFound异常:

java.lang.ClassNotFoundException:org.glassfish.hk2.utilities.reflection.Logger

我在WEB-INF / lib文件夹中有以下JAR

* jxapi-1.0.3.jar(由ADLNET xAPI项目提供) * HK2-API-2.4.0.jar * CXF束-JAXRS-2.7.18.jar * JAXRSり2.25.1.jar * Jersey的番石榴2.25.1.jar

在使用“-verbose:class”运行应用程序时,我发现两种情况下的类加载顺序不同。在错误的情况下, “cxf-bundle-jaxrs-2.7.18.jar”根本没有被使用。

catalina.out(OK case)

...... [从文件中加载org.glassfish.jersey.client.JerseyWebTarget:/ C:/Users/Diptendu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnITyLMSv9/WEB-INF/ LIB / JAXRS-RI-2.25.1.jar] [从文件中加载javax.ws.rs.core.UriBuilder:/ C:/Users/Diptendu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnITyLMSv9/WEB-INF/ LIB / JAXRS-RI-2.25.1.jar] [从文件中加载javax.ws.rs.ext.RuntimeDelegate:/ C:/Users/Diptendu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnITyLMSv9/WEB-INF/ LIB / JAXRS-RI-2.25.1.jar] [从文件中加载javax.ws.rs.ext.FactoryFinder:/ C:/Users/Diptendu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnITyLMSv9/WEB-INF/ LIB / JAXRS-RI-2.25.1.jar] [从文件中加载javax.ws.rs.ext.FactoryFinder $ 1:/ C:/Users/Diptendu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnITyLMSv9/WEB-INF /lib/jaxrs-ri-2.25.1.jar] [从文件加载org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl:/ C:/Users/Diptendu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnITyLMSv9/WEB- INF / LIB / CXF束-JAXRS-2.7.18.jar] [从文件中加载javax.ws.rs.core.Variant $ VariantListBuilder:/ C:/Users/Diptendu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnITyLMSv9/WEB- INF / lib目录/ JAXRSり2.25.1.jar] [从文件中加载org.apache.cxf.jaxrs.impl.VariantListBuilderImpl:/ C:/Users/Diptendu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnITyLMSv9/WEB- INF / LIB / CXF束-JAXRS-2.7.18.jar] [从文件中加载了javax.ws.rs.core.Response $ ResponseBuilder:/ C:/Users/Diptendu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnITyLMSv9/WEB- INF / lib目录/ JAXRSり2.25.1.jar] ......

catalina.out(错误案例)

...... [从文件中加载org.glassfish.jersey.client.JerseyWebTarget:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 | [从文件中加载javax.ws.rs.core.UriBuilder:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 | [从文件中加载javax.ws.rs.ext.RuntimeDelegate:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 | [从文件中加载javax.ws.rs.ext.FactoryFinder:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 | [从文件中加载javax.ws.rs.ext.FactoryFinder $ 1:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 | [从文件中加载org.glassfish.jersey.internal.AbstractRuntimeDelegate:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 | [从文件中加载org.glassfish.jersey.server.internal.RuntimeDelegateImpl:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 | [从文件中加载org.glassfish.jersey.uri.internal.JerseyUriBuilder:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 | [从文件中加载javax.ws.rs.core.Response $ ResponseBuilder:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 | [从文件中加载org.glassfish.jersey.message.internal.OutboundJaxrsResponse $ Builder:/opt/tomcat8/webapps/LearnITyAcademy/WEB-INF/lib/jaxrs-ri-2.25.1.jar] 信息| jvm 1 | 2017/06/17 17:56:50 |

这里可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

可能是WEB-INF中的jar文件已损坏,因此更新新版本的依赖项并添加新的依赖项: -

<dependency>
    <groupId>org.glassfish.hk2</groupId>
    <artifactId>hk2-utils</artifactId>
    <version>2.5.0-b35</version>
</dependency>

并更新项目并导出WAR文件。

相关问题