java - 实现REST客户端的类加载问题

标签 java rest tomcat jersey

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

我最近在另一个服务器(CentOS,Tomcat)上部署该WAR文件时
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-bundle-jaxrs-2.7.18.jar
* jaxrs-ri-2.25.1.jar
* jersey-guava-2.25.1.jar

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

catalina.out(正常情况下)

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

catalina.out(错误情况)

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

这里可能出什么问题了?

最佳答案

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

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


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

关于java - 实现REST客户端的类加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607774/

相关文章:

java - 使用 Batik 的 SVGGraphics2D 时如何设置字体系列而不是字体?

rest - Azure REST API 不返回虚拟机的加密设置

java - 从浏览器访问 java web 服务

java - 父类(super class)和子类中的构造函数

java - Kurento一对一视频通话录音Java

rest - 我是否需要对/登录端点进行 CSRF 保护?

java - OAuth 2.0 - 第一步细节,有人可以澄清吗?

java - 在 TomEE 上访问 OpenEJB 示例 Web 服务时查找错误

eclipse - JSP:include 没有呈现包含的文件

java - 如何防止 JPA 插入锁定数据库表?