ฉันได้รับข้อผิดพลาดด้านล่างขณะใช้งาน Jersey API ใน Tomcat 8.5.11 ซึ่งทำให้ API ของฉันหยุดทำงาน:
HTTP Status 500 - Servlet.init () สำหรับ servlet Jersey REST Service แสดงข้อยกเว้น
พิมพ์รายงานข้อยกเว้น
ข้อความ Servlet.init () สำหรับ servlet Jersey REST Service แสดงข้อยกเว้น
คำอธิบายเซิร์ฟเวอร์พบข้อผิดพลาดภายในที่ทำให้ไม่สามารถดำเนินการตามคำขอนี้ได้
ข้อยกเว้น
javax.servlet.ServletException: Servlet.init () สำหรับ servlet Jersey REST Service โยนข้อยกเว้น org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:474) org.apache.catalina.valves.ElrorReportValve.Valve java: 79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:624) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:349) org.apache.coyote.http service (Http11Processor.java:783) org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol.java:798) org.apache.tomcat.util net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1434) org.apache.tomcat.util.net.SocketProcessorBaseรัน (SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) java.util.concurrentThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) org.apache.tomcat.utache threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Thread.java:745)
สาเหตุที่แท้จริง
java.lang.IllegalStateException: ไม่พบ InjectionManagerFactory org.glassfish.jersey.internal.inject.Injections.lookupInjectionManagerFactory (Injections.java:97) org.glassfish.jersey.internal.inject.Injections.createInjectionManager (Injections.java:89) org.glassfish.jersey.server.ApplicationHandler (ApplicationHandler.java:282) org.glassfish.jersey.servlet.WebComponent. (WebComponent.java:335) org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:178) ServletContainer.init (ServletContainer.java:370) javax.servlet.GenericServlet.init (GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:474) ErrorReportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves
แอ็พพลิเคชันคือบิลด์ที่มีการพึ่งพาต่อไปนี้กับ gradle:
dependencies {
compile (
// REST
"org.glassfish.jersey.containers:jersey-container-servlet:2.+",
"javax.servlet:javax.servlet-api:4.+",
// REST Token
"org.bitbucket.b_c:jose4j:0.+",
// MongoDB
"org.hibernate.ogm:hibernate-ogm-bom:5.+",
"org.hibernate.ogm:hibernate-ogm-infinispan:5.+",
"org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.+",
"org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.+",
"org.jboss.narayana.jta:narayana-jta:5.+",
"org.jboss:jboss-transaction-spi:7.+",
"log4j:log4j:1.+",
"org.hibernate.ogm:hibernate-ogm-mongodb:5.+",
"org.bouncycastle:bcprov-jdk15on:1.+"
) }
ดาวน์โหลดนี้jersey-common-2.26-b04.jar
ซึ่งมีคลาสที่หายไปภายใต้/org/glassfish/jersey/internal/inject/InjectionManagerFactory
ซึ่งมีอยู่ภายใต้ชั้นหายไปไฟล์ jar ถูกปรับใช้ในโฟลเดอร์ Tomcat ภายใต้WEB-INF/lib
มีอะไรผิดปกติที่นี่หรือ สคริปต์ gradle ทำงานเมื่อไม่กี่เดือนที่ผ่านมาด้วยรุ่น Tomcat เดียวกัน