Apache tomcat 7在localhost上运行良好,但是尝试运行时已部署的war文件抛出异常

时间:2018-09-01 09:06:11

标签: java eclipse web-services servlets tomcat7

我在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>

1 个答案:

答案 0 :(得分:0)

在我看来,原因是您的类路径中缺少库。具体来说,您有一些用@javax.persistence.PersistenceUnit注释的类,但是类路径中缺少该类。因此,我建议您列出测试Web服务器中部署的所有库(包括/ lib库),并将它们与本地服务器中部署的库进行比较,并特别注意其中的一些:

  • persistence.jar
  • javaee-api-*。jar
  • annotations-api-*。jar

..是可能存在javax.persistence.PersistenceUnit类的标准库。