Попытка собрать из командной строки и создать файл WAR - PullRequest
2 голосов
/ 28 октября 2011

Макет моей папки:

/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. публикация в каталоге веб-приложений Tomcat с использованием файла .war

Куда поместить файл HelloWorld.java и как его скомпилировать с помощью командной строки?Я считаю, что вывод HelloWorld.java идет в папку /classes/.

Тогда как мне сгенерировать файл .war?

Я попытался просто вручную скомпилировать так:

javac HelloWorld.java

И я получил ошибки, связанные с импортом, т.е. он не смог найти библиотеки в моем пути.Нужно ли загрузить библиотеку Java EE и добавить ее в свой путь?

Ответы [ 3 ]

4 голосов
/ 28 октября 2011

Ваш код зависит от API сервлета, которого нет в базовой библиотеке Java. Вам нужно будет добавить его в ваш classpath:

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

Выше предполагается, что у вас есть package yourpackage; объявление в вашем файле .java. Пакет по умолчанию следует избегать.

2 голосов
/ 28 октября 2011

Если это всего лишь игрушечный проект, он может не стоить вашего времени, но я предлагаю вам использовать серьезный инструмент для сборки, поскольку отслеживание всех необходимых вам библиотек скоро станет неуправляемой задачей. Я использую Maven , но есть альтернативы.

0 голосов
/ 28 октября 2011

Вы должны использовать команду jar и добавить зависимости в classpath

...