0

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

项目类

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

我想在本地 Tomcat 服务器上部署这个 servlet。我正确设置了必要的 maven 依赖项和配置,并且 maven.war成功生成了一个文件。

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

我怀疑我的 servlet 无法部署,因为 main 方法是 inCreateMasterConfig.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)
4

2 回答 2

2

改变

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

至:

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

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

于 2013-08-14T01:57:33.803 回答
1

首先是使用 msangel 在他/她的回答中提到的完整包名称更改 servlet 名称。

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

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

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

于 2013-08-14T03:09:29.247 回答