首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Apache上部署WAR文件-不工作

在Apache上部署WAR文件-不工作
EN

Stack Overflow用户
提问于 2014-03-14 08:53:36
回答 4查看 6.5K关注 0票数 0

我使用Eclipse在Java中实现了一个API,并以war文件的形式导出了它。它在我开发的系统上运行得很好。

这是web.xml

代码语言:javascript
复制
<?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>Favorite-API</display-name>
  <servlet>
    <servlet-name>Favorite-API</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>favorite.api</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Favorite-API</servlet-name>
    <url-pattern>/rest-videos/*</url-pattern>
  </servlet-mapping>
</web-app>

现在,我想在(另一个系统)上部署API。因此,我将war文件部署到另一台机器的Apache服务器上,遵循给定的这里步骤。

但是,在运行API时,我会得到以下错误:

代码语言:javascript
复制
HTTP Status 500 -   
________________________________


type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: Servlet.init() for servlet Favorite-API threw exception
  org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
  org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
  org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
  org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
  org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
  org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
  java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
  java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  java.lang.Thread.run(Unknown Source)


root cause 

java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor
  com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79)
  com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104)
  com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78)
  com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:89)
  com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:696)
  com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:674)
  com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:205)
  com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376)
  com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559)
  javax.servlet.GenericServlet.init(GenericServlet.java:160)
  org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
  org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
  org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
  org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
  org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
  org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
  java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
  java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  java.lang.Thread.run(Unknown Source)


root cause 

java.lang.ClassNotFoundException: org.objectweb.asm.ClassVisitor
  org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
  org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
  com.sun.jersey.api.core.ScanningResourceConfig.init(ScanningResourceConfig.java:79)
  com.sun.jersey.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:104)
  com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:78)
  com.sun.jersey.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:89)
  com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:696)
  com.sun.jersey.spi.container.servlet.WebComponent.createResourceConfig(WebComponent.java:674)
  com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:205)
  com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376)
  com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559)
  javax.servlet.GenericServlet.init(GenericServlet.java:160)
  org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
  org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
  org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
  org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
  org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
  org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
  java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
  java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  java.lang.Thread.run(Unknown Source)


note The full stack trace of the root cause is available in the Apache Tomcat/7.0.27 logs.

出什么问题了?有什么帮助吗。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-14 09:08:58

类路径中可能缺少一些依赖项。

代码语言:javascript
复制
java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor

假设开发tomcat有这个类/包,而不是部署war的tomcat中。

票数 3
EN

Stack Overflow用户

发布于 2014-03-14 09:10:24

servlet未找到的类def意味着tomcat经常可用的servlet由于某种原因而丢失。可能tomcat的lib文件夹中的jar文件(可能是tomcat lib文件夹中的其他jar文件)已经损坏或删除。这两种情况有时都发生在我身上,有坏的虚拟机要处理,磁盘失败,或者基于maven的构建过程会将附加的api部署到lib文件夹,并在复制新lib文件之前删除其中的内容。

票数 1
EN

Stack Overflow用户

发布于 2014-03-14 09:20:26

似乎您丢失了$TOMCAT_HOME/lib目录中的ObjectWeb ASM工件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22400176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档