请求REST在tomcat上失败

时间:2018-06-01 13:44:01

标签: java tomcat jersey

SEVERE: Allocate exception for servlet Jersey-Servlet
java.lang.ArrayIndexOutOfBoundsException: 9578
    at org.objectweb.asm.ClassReader.readClass(ClassReader.java:2015)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:469)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:425)
    at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener.process(AnnotationAcceptingListener.java:169)
    at org.glassfish.jersey.server.ResourceConfig.scanClasses(ResourceConfig.java:883)
    at org.glassfish.jersey.server.ResourceConfig._getClasses(ResourceConfig.java:840)
    at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:755)
    at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1171)
    at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1144)
    at org.glassfish.jersey.server.ResourceConfig.createRuntimeConfig(ResourceConfig.java:1140)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:299)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:169)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:359)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1230)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1174)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:847)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

以下是我用来测试的服务。

@Path("/ping")
public class PingService {
  @GET
  public String respondOK() {
    return "SERVICE OK";
  }
}

我在尝试执行请求时遇到异常。使用javax.ws.rs-api:2.0,org.glassfish.jersey.core:jersey-server:2.5,Java-8

1 个答案:

答案 0 :(得分:0)

问题的原因可能是您正在使用Tomcat 7。 您应该使用最新版本的Tomcat 8甚至是Tomcat 9。

当您使用Lambda表达式或版本为public long getPendingImagesCount() { try(Realm realm = Realm.getInstance(RealmUtils.getRealmConfiguration())) { return realm.where(PatientRecordImage.class).count(); } } 的Java字节码较新时,似乎会发生异常。

在这里您可以找到有关该问题的更多详细信息: