无法从Tomcat上的Maven项目部署我的servlet

时间:2013-08-14 00:36:32

标签: java eclipse maven tomcat

我在eclipse上有一个现有的maven项目,我已经在其中包含了一个servlet类(ConfigFileInput.java):

Project classes

ConfigFileInput.java是servlet类,而其他类是普通的java类,CreateMasterConfig.java包含main方法。

我想在本地Tomcat服务器上部署此servlet。我已正确设置必要的maven依赖项和配置,maven会成功生成.war文件。

当我将此.war文件上传到我的Tomcat服务器并进行部署时,它无法启动。 所以,我在Tomcat文件夹中查找了我的webapp目录,发现所有相关的类都存在。

我怀疑我的servlet无法部署,因为main方法在CreateMasterConfig.java而servlet类是ConfigFileInput.java,但我不确定这是否属实,以及我应该如何纠正这个问题

我很感激对此提出一些建议。

修改

我的web.xml文件:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<display-name>ConfigFileInput</display-name>
<description>
   This application accepts a URL from user to read the Config File, validates it,
   and merges into MasterConfigFile
</description>

<servlet>
    <servlet-name>ConfigFileInput</servlet-name>
    <servlet-class>ConfigFileInput</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ConfigFileInput</servlet-name>
    <url-pattern>/ConfigFileInput</url-pattern>
</servlet-mapping>

编辑2:

刚检出Tomcat生成的日志文件,并遇到了这个错误:

SEVERE: End event threw exception
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:802)
at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201)
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1057)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1742)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2900)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1543)

2 个答案:

答案 0 :(得分:2)

更改

<servlet-class>ConfigFileInput</servlet-class>

为:

<servlet-class>edu.apollogrp.dfe.configuration.masterconfig.ConfigFileInput</servlet-class>

这应该可以解决您的错误。 你应该知道关于servlet life-cycle的一些话。 servlet中没有任何main method的要求。

答案 1 :(得分:1)

首先,如msangel在他/她的回答中所提到的那样,用完整的包名改变servlet名称。

其次,您需要了解错误消息:

java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet

当您尝试在.war文件中部署catalina.jar时,通常会发生这种情况。只需修复构建文件,即不要在.war文件中包含catalina.jar文件。这应该取消这个错误。