コマンドラインから構築して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("

Hello World

"); pw.println("</body></html>"); } }

私は次のことをしたい:

  1. コマンドラインですべてをビルドする
  2. .warファイルを使用してTomcatのwebappsディレクトリに公開する

どこに HelloWorld.java ファイルを置くべきですか?また、コマンドラインを使ってコンパイルする方法は? 私は HelloWorld.java の出力は/classes/フォルダにあると思います。

次に、 .war ファイルを生成するにはどうすればよいですか?

私はちょうどこのように手動でコンパイルしようとしました:

javac HelloWorld.java

インポートに関するエラーが発生しました。つまり、自分のパスにライブラリが見つかりませんでした。ダウンロードして自分のパスに追加するJava EEライブラリがありますか?

2
IDEを使用して元々作成されたソースファイルか、コマンドラインからすべて手動で作成していますか?
追加された 著者 Steve Claridge,

3 答え

あなたのコードはコアJavaライブラリにないサーブレット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; 宣言があることを前提としています。デフォルトのパッケージは避けるべきです。

4
追加された

これが単なるおもちゃプロジェクトの場合、それは価値がないかもしれませんが、あなたが必要とするすべての図書館を追跡することは、すぐに管理不能な仕事になると思います。私が使用しているものは Maven ですが、選択肢があります。

2
追加された

jarコマンドを使用し、クラスパスに依存関係を追加する必要があります

1
追加された