【问题标题】:Trying to build from the command line, and produce a WAR file尝试从命令行构建,并生成一个 WAR 文件
【发布时间】:2011-10-28 11:33:53
【问题描述】:

我的文件夹布局是:

/web-inf/web.xml /web-inf/类/

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 文件发布到 Tomcat 的 webapps 目录

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

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

我尝试像这样手动编译:

javac HelloWorld.java

我遇到了与导入相关的错误,即它在我的路径中找不到库。是否有我必须下载的 Java EE 库并将其添加到我的路径中?

【问题讨论】:

  • 源文件最初是使用 IDE 创建的,还是您是从命令行手动创建的?

标签: java tomcat war


【解决方案1】:

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

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

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

WAR 结构可能如下所示:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-09
        • 2017-07-26
        • 2015-05-28
        相关资源
        最近更新 更多