Saya menerima kesalahan di bawah ketika menjalankan Jersey API saya di Tomcat 8.5.11 yang menyebabkan API saya berhenti:
Status HTTP 500 - Servlet.init () untuk servlet Jersey REST Service memberikan pengecualian
ketik laporan Pengecualian
message Servlet.init () untuk servlet Jersey REST Service memberikan pengecualian
deskripsi Server mengalami kesalahan internal yang mencegahnya memenuhi permintaan ini.
pengecualian
javax.servlet.ServletException: Servlet.init () untuk servlet Jersey REST Service melempar pengecualian org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:474) org.apache.catalina.valves.ErrorReportValve.vvvvvvvevevealve (errorRve. java: 79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:624) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:349) org.apache.coyote ke http: service (Http11Processor.java:783) org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) org.apache.coyote.AbstrakProtocol $ ConnectionHandler.process (AbstractProtocol.java:798) org.apache.tomcat.tomcat. net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1434) org.apache.tomcat.util.net.SocketProcessorBase.jalankan (SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) org.apache.tomcat.tomcat. threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Thread.java:745)
penyebab utama
java.lang.IllegalStateException: InjectionManagerFactory tidak ditemukan. 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:82) org.glassfish.jersey.servlet.WebComponent. (WebComponent.java:335) org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:178) org.glassfish.jersey.servlet. ServletContainer.init (ServletContainer.java:370) javax.servlet.GenericServlet.init (GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:474) syaraf.atal. ErrorReportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves.
Aplikasi ini dibuat dengan dependensi berikut dengan 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.+"
) }
Unduhan ini jersey-common-2.26-b04.jar
yang berisi kelas yang hilang di bawah /org/glassfish/jersey/internal/inject/InjectionManagerFactory
. File jar disebarkan ke folder Tomcat di bawahWEB-INF/lib
Apa yang salah di sini? Skrip gradle bekerja beberapa bulan terakhir dengan versi Tomcat yang sama.