我在eclipse中有一个jax rs Web服务,它们在我们的测试服务器上运行良好,但是当我尝试在eclipse中运行它们时,在本地计算机上引发了异常。
下面是它引发的错误
用于Servlet ServletAdaptor的消息Servlet.init()抛出异常
说明服务器遇到意外情况, 阻止它满足请求。
例外
javax.servlet.ServletException:Servlet的Servlet.init() ServletAdaptor引发异常 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1136) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:637) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:318) java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(未知来源)
根本原因
java.lang.TypeNotPresentException:类型 javax.persistence.PersistenceUnit不存在 sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(未知 资源) sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(未知 来源)sun.reflect.generics.tree.ClassTypeSignature.accept(未知 资源) sun.reflect.generics.visitor.Reifier.reifyTypeArguments(未知 资源) sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(未知 来源)sun.reflect.generics.tree.ClassTypeSignature.accept(未知 资源) sun.reflect.generics.repository.ClassRepository.getSuperInterfaces(未知 源码)java.lang.Class.getGenericInterfaces(来源不明) com.sun.jersey.core.spi.factory.InjectableProviderFactory.getMetaArguments(InjectableProviderFactory.java:135) com.sun.jersey.core.spi.factory.InjectableProviderFactory.add(InjectableProviderFactory.java:93) com.sun.jersey.core.spi.factory.InjectableProviderFactory $ 1.onAdd(InjectableProviderFactory.java:109) com.sun.jersey.core.spi.factory.InjectableProviderFactory $ 1.onAdd(InjectableProviderFactory.java:107) com.sun.jersey.core.spi.component.ProviderServices.getProvidersAndServices(ProviderServices.java:204) com.sun.jersey.core.spi.factory.InjectableProviderFactory.configure(InjectableProviderFactory.java:106) com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1153) com.sun.jersey.server.impl.application.WebApplicationImpl.access $ 700(WebApplicationImpl.java:180) com.sun.jersey.server.impl.application.WebApplicationImpl $ 13.f(WebApplicationImpl.java:799) com.sun.jersey.server.impl.application.WebApplicationImpl $ 13.f(WebApplicationImpl.java:795) com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795) com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790) com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:509) com.sun.jersey.spi.container.servlet.ServletContainer $ InternalWebComponent.initiate(ServletContainer.java:339) com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394) com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1136) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:637) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:318) java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(未知来源)
根本原因
下面是Eclipse项目的web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>leaveMgt</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>ServletAdaptor</servlet-name>
<servlet-class>com.sun.jersey.server.impl.container.servlet.ServletAdaptor</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>webServices</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletAdaptor</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
答案 0 :(得分:0)
在我看来,原因是您的类路径中缺少库。具体来说,您有一些用@javax.persistence.PersistenceUnit
注释的类,但是类路径中缺少该类。因此,我建议您列出测试Web服务器中部署的所有库(包括/ lib库),并将它们与本地服务器中部署的库进行比较,并特别注意其中的一些:
..是可能存在javax.persistence.PersistenceUnit
类的标准库。