Java 将war部署到tomcat配置问题

Java 将war部署到tomcat配置问题,java,tomcat,deployment,tomcat7,web.xml,Java,Tomcat,Deployment,Tomcat7,Web.xml,试图学习Ant/Tomcat,我在部署我的战争时遇到了一些困难。我在catalina、localhost或localhost_访问日志中没有发现错误,因此我相信这只是一个配置问题。Ant build运行良好。部署战争。当我转到localhost:8080/antDemo/hello时,我得到一个404。代码如下 我感到奇怪的是,当我导航到tomcat/webapps/antDemo时,我只看到HelloServlet.java文件和META-INF文件夹,而我希望看到web.xml和classe

试图学习Ant/Tomcat,我在部署我的战争时遇到了一些困难。我在catalina、localhost或localhost_访问日志中没有发现错误,因此我相信这只是一个配置问题。Ant build运行良好。部署战争。当我转到localhost:8080/antDemo/hello时,我得到一个404。代码如下

我感到奇怪的是,当我导航到tomcat/webapps/antDemo时,我只看到HelloServlet.java文件和META-INF文件夹,而我希望看到web.xml和classes文件夹或类似的东西

我读过很多关于堆栈溢出的问题(虽然我觉得自己像个白痴,因为无法解决它),但运气不好

帮助会很好,但更重要的是,它向一个全面的信息资源提供了一些指导,不仅解释了这样的东西应该如何配置,而且还解释了为什么需要这样配置。对我来说,找到“为什么”更难,也是最重要的部分

项目结构:

tomcatdemo
|-src
|---HelloServlet.java
|-WebContent
|---WEB-INF
|------classes
|---------HelloServlet.class
|------web.xml
|-build.xml
HelloServlet.java

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet{

    public void doGe(HttpServletRequest request, HttpServletResponse response)
    throws IOException{
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<body>");
        out.println("<h1>Hello Servlet Get</h1>");
        out.println("</body>");
        out.println("</html>"); 
    }
}
问题是

            <fileset dir="${source}"/>

你应该使用

            <fileset dir="${base}/WebContent"/>


取而代之的是(未测试)。

请发送您的
war
结构。@AlexR Tomcat夸大了什么?在/tomcat/webapps/antDemo/下,WAR文件构建后的结构是什么?您可以通过将.WAR重命名为.zip from.WAR来解压缩战争。如果WAR文件创建不正确,这可能会有所帮助。话虽如此,我本以为服务器日志中会有错误。@MichaelFreake-补充道。我不明白为什么war文件在编译后不包含该类。在ant build.xml中,当我编译代码时,我将其写入/WebContent/WEB-INF/classes。在eclipse中,我看不到实际的类文件,但如果在explorer中导航到工作区,我会看到它。我应该在别的地方写吗?也许在src下?如果是,为什么?谢谢。这是我问题的一部分。通常,我的build.xml中有很多失败。这帮我把他们都找出来了。另外一些失败是,我的编译目标调用的是部署目标,而不是war目标。因此,后续构建没有执行war任务,因此同一个(已中断的)war不断部署到tomcat(facepalm)。感谢againit极大地帮助我们查看生成的工件内部,以了解实际发生了什么。这就是说,如果您仍然在努力开始,我建议您从ant切换到maven。您可以避免此类问题,因为Maven比ant更了解您的项目。这非常有帮助……谢谢。有趣的是,你应该提到maven。这正是我想要使用的(我在过去的项目中使用过),但我的新雇主明确表示不要使用maven。哦,好吧:)如果你的新雇主有明确的政策说“使用ant,而不是maven”,你可能会问有经验的同事。他们很可能已经看到了您可能遇到的任何问题。
antDemo
|-META-INF
|----MANIFEST.MF
|-HelloServlet.java
            <fileset dir="${source}"/>
            <fileset dir="${base}/WebContent"/>