带有 Jersey 的 Jetty 没有加载超类

Jetty, with Jersey, is not loading superclass

我正在 Java web 项目 运行ning 在码头网络服务器上工作。 我有 class A 继承自 B,在 运行 时我发现 class A 没有加载方法class B。 Class A:

public class A extends B{
...
}

B

public class B extends Serializable{

public void sampleMethod(){}
...
}

在使用 Java 反射添加一些日志记录后,当试图找到 A 的超级 class 时,如下所示:

Class.forName("A").getSuperClass();

上一行代码returns表示classObjectA的超class。 我正在使用 JDK 8 和 Jetty 9。

我也在使用 Jersey:

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
</dependency>

<dependency>
    <groupId>org.glassfish.hk2</groupId>
    <artifactId>guice-bridge</artifactId>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-bean-validation</artifactId>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
</dependency>

使用此 运行ning 配置:

this.packages("com.orange.erable.notif.ws.external.resources");
this.register(CheckStatusResource.class);
//
// register custom jackson mapper
this.register(JacksonObjectMapperProvider.class);
// register roles allowed feature
this.register(RolesAllowedDynamicFeature.class);
// register auth filter
this.register(ContainerAuthExtFilter.class);
this.register(VersionFilterServlet.class);
this.register(SenderIdAuthFilter.class);
this.register(ModelValidationExceptionMapper.class);
this.register(DataValidationExceptionMapper.class);
this.register(DataNotificationExceptionMapper.class);
this.register(ValidationExceptionMapper.class);
this.register(JsonParseExceptionMapper.class, 1);
this.register(JsonProcessingExceptionMapper.class, 1);
this.register(JsonMappingExceptionMapper.class, 1);
this.register(QueryParamExceptionMapper.class, 1);
this.register(WebApplicationExceptionMapper.class);
this.register(GlobalExceptionMapper.class);
this.property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);
this.register(DateParamConverterProvider.class);
this.register(PaginationBoundaryParamConverterProvider.class);
this.register(MappableExceptionMapper.class, 1);
this.register(MappableExceptionWrapperInterceptor.class);
this.register(JsonCustomExceptionMapper.class);

this.register(MultiPartFeature.class);

此问题也与此 有关。

编辑: 我正在使用 Jetty 9.22,我曾尝试 运行 使用相同 Jetty 版本的不同机器上的项目,所描述的行为只是在其中一些机器上发现的。

I'm using Jetty 9.22, I have tried to run the project on different machines with the same Jetty version, the described behaviour is just discovered in some of them.

这是同一 class 在多个位置的多个副本的明显标志。

由于您使用的是 maven,请考虑 运行 重复的 class 检测插件之一,以了解您的情况。