Компиляция нескольких пакетов с использованием командной строки в Java
Привет, я использовал IDE, но теперь мне нужно запустить и скомпилировать из командной строки.
Проблема в том, что у меня есть несколько пакетов, и я попытался найти ответ, но ничего не помогло.
Так что я
src/
Support/ (.java files)
Me/ (.java files)
Wrapers/ (.java files)
Вы знаете, как скомпилировать все с помощью Javac?
8 ответов
Это должно сделать это (могут потребоваться дополнительные элементы classpath через -cp
переключатель командной строки):
javac Support/*.java Me/*.java Wrapers/*.java
Но если ваш процесс сборки становится более сложным (и будет!), Вы должны изучить использование Apache Ant для автоматизации сборки.
Вы должны использовать инструменты сборки, такие как Maven или Ant для таких задач.
На начальных этапах, когда проект не очень сложен, вы можете использовать следующую строку для компиляции с соответствующим classpath (как предложено @Michael):
javac Support/*.java Me/*.java Wrapers/*.java
Реальный ответ - javac -d (места, где должны быть собраны и размещены классы) -sourcepath (источник пакета в корне) -cp (путь к классам зависимостей, который снова может быть папкой классов, где классы создаются и хранятся) полностью квалифицированное имя файла Java.
Ex javac -d классы -sourcepath src -cp классы src\com\test\FirstSample.java
FirstSample.java содержит основной метод. Структура Pacjage упомянута ниже.
Перед компиляцией
HomeApp
--src
------ com \ test \ FirstSample.java (первый пример с использованием FirstPojo.java)
------ ком \ тест \ FirstPojo.java
--classes
После компиляции
HomeApp
--src
------ com \ test \ FirstSample.java (FirstSample.java с использованием FirstPojo.java)
------ ком \ тест \ FirstPojo.java
--classes
------ com \ test \ FirstSample.class (FirstSample.class с использованием FirstPojo.class)
------ ком \ тест \FirstPojo.class
Если вам действительно нужно просто использовать javac и стандартные команды UNIX, вы можете сделать это:
find src -name \*.java -print0 | xargs -0 javac -d classes
Чтобы скомпилировать команду Выполнить ниже [она сохранит все файлы классов в папке классов]
javac -d классы Поддержка / *.java Me / *.java Wrapers / *.java
** Примечание: сначала необходимо создать папку классов.
Чтобы запустить приложение Java, выполните команду ниже
java -cp классы {mainfile_name}
Замените mainfile_name своим основным файлом.
чтобы скомпилировать Java-программу как целый пакет, вам следует выполнить приведенную ниже команду там, где присутствует пакет (т. е. в вашем текущем местоположении должна быть папка, которую вы собираетесь скомпилировать)
javac -d <имя_пакета>/*.java
здесь хранятся файлы скомпилированных классов. <package_name> — это либо имя пакета, либо его путь.
<имя_пакета>/*.java
с помощью этого синтаксиса вы можете добавить сразу несколько пакетов, разделенных пробелом.
Во многих случаях Муравей является излишним. Просто используйте файл BAT, если вы находитесь в Windows, или сценарий оболочки (sh file), если вы находитесь в 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