Компиляция нескольких пакетов с использованием командной строки в Java

Привет! Я использовал IDE, но теперь мне нужно запустить и скомпилировать из командной строки.

Проблема в том, что у меня есть несколько пакетов, и я попытался найти ответ, но ничего не помогло.

Итак, у меня есть

src/
  Support/ (.java files)
  Me/ (.java files) 
  Wrapers/ (.java files)  

Знаете ли вы, как скомпилировать все с помощью javac?

11
задан John Topley 18 August 2010 в 13:52
поделиться

5 ответов

Это должно сработать (могут потребоваться дополнительные элементы пути к классам через переключатель командной строки -cp ):

javac Support/*.java Me/*.java Wrapers/*.java

Но если ваш процесс сборки становится более сложным (и он будет!), вам следует изучить возможность использования Apache Ant для автоматизации сборки.

9
ответ дан 3 December 2019 в 03:34
поделиться

Для таких задач следует использовать такие инструменты сборки, как Maven или Ant .

На начальных этапах, когда проект не очень сложен, вы можете использовать следующую строку для компиляции с соответствующим путем к классам (как предлагает @Michael):

javac Support / *. Java Me / *. java Wrapers / *. java

9
ответ дан 3 December 2019 в 03:34
поделиться

Если вам действительно нужно просто использовать javac и стандартные команды UNIX, вы можете сделать это:

find src -name \*.java -print0 | xargs -0 javac -d classes
2
ответ дан 3 December 2019 в 03:34
поделиться
javac -d compiled $(find src -name *.java)
6
ответ дан 3 December 2019 в 03:34
поделиться

Во многих случаях Ant слишком силен. Просто используйте файл BAT, если вы работаете в Windows, или сценарий оболочки (файл sh), если вы работаете в Linux. Вы можете создать текстовый файл, содержащий все ваши команды javac, и просто запустить этот файл, когда захотите построить.

Например, я использую следующий файл bat для создания одного из своих приложений:

@echo off
echo Building Shazaam...

del classes\com\aepryus\shazaam\*.* /q
del classes\com\aepryus\shazaam\engine\*.* /q
del classes\com\aepryus\shazaam\domain\*.* /q
del classes\com\aepryus\shazaam\persist\*.* /q
del classes\com\aepryus\shazaam\view\*.* /q
del classes\com\aepryus\shazaam\task\*.* /q
del classes\com\aepryus\shazaam\action\*.* /q
del classes\com\aepryus\shazaam\controller\*.* /q

javac src\com\aepryus\shazaam\*.java        -classpath \lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar; -d classes
javac src\com\aepryus\shazaam\engine\*.java -classpath \lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\domain\*.java -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\persist\*.java    -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\view\*.java   -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\task\*.java   -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\action\*.java -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\controller\*.java -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepRPC.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes

cd classes
jar cf ..\war\WEB-INF\lib\Shazaam.jar .
cd..

echo Complete
0
ответ дан 3 December 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: