尝试从命令行构建,并生成WAR文件

时间:2011-10-28 11:33:53

标签: java tomcat war

我的文件夹布局是:

/web-inf/web.xml
/web-inf/classes/

HelloWorld.java:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet{ 
  public void doGet(HttpServletRequest request, 
  HttpServletResponse response)
  throws ServletException,IOException{
  response.setContentType("text/html");
  PrintWriter pw = response.getWriter();
  pw.println("<html>");
  pw.println("<head><title>Hello World</title></title>");
  pw.println("<body>");
  pw.println("<h1>Hello World</h1>");
  pw.println("</body></html>");
  }
}

我想做以下事情:

  1. 通过命令行构建所有内容
  2. 使用.war文件
  3. 发布到Tomcat的webapps目录

    我应该在哪里放置HelloWorld.java文件,以及如何使用命令行编译它? 我相信HelloWorld.java的输出位于/classes/文件夹中。

    那我该如何生成.war文件?

    我尝试过像这样手动编译:

    javac HelloWorld.java

    我得到了与进口相关的错误,即它无法在我的路径中找到库。是否有我需要下载的Java EE库并将其添加到我的路径中?

3 个答案:

答案 0 :(得分:4)

您的代码依赖于核心Java库中不存在的servlet API。您需要将它添加到类路径中:

javac -classpath $TOMCAT_HOME/lib/servlet-api.jar yourpackage/HelloWorld.java

WAR与JAR(ZIP与UTF-8文件名)共享相同的文件格式。通常,您可以使用ZIP实用程序来处理它们。

WAR结构可能如下所示:

index.html
foo.jsp
WEB-INF/classes/yourpackage/HelloWorld.class
WEB-INF/web.xml

以上假设您的.java文件中有package yourpackage;声明。应该避免使用默认包。

答案 1 :(得分:2)

如果这只是一个玩具项目,那可能不值得你花时间,但我建议你采用一个认真的构建工具,因为跟踪你需要的所有库很快就会成为一个难以管理的任务。我使用的是Maven,但也有其他选择。

答案 2 :(得分:-1)

您必须使用jar命令并将依赖项添加到类路径