Легкая компиляция Java командной строки

Таким образом, я должен отправить проект Java кому-то за пределами нашей компании, у кого нет опыта с Java, и они должны скомпилировать его. Существует ли простой способ сделать это на командной строке окон, которая не требует выписывания списков файлов?

Лично я думаю, что javac должен быть достаточно умным для обработки

javac *

когда в папке только под корнем иерархии пакета. Есть ли на этой приблизительной оценке что-нибудь?

Править: Исходная структура папок сложна и никакого однократного класса, таким образом, некоторые идеи, упомянутые до сих пор, не будут работать. Спасибо, хотя! Думайте 9 уровней глубоко с кодом на многих уровнях.

5
задан nash 15 March 2010 в 23:46
поделиться

4 ответа

Из папки, представляющей основу иерархии пакетов, предполагая, что ваш класс начальной точки называется Main, в пакете под названием app,

javac -classpath . app/Main.java

должны быть сгенерированы правильные определения классов. Компилятор обнаружит зависимости и скомпилирует все остальные классы, которые необходимы. Файлы классов появятся в том же каталоге, что и их исходные файлы.

Если, как вы говорите, у вас есть "более одного входящего" класса, вам придется, по крайней мере, определить все эти классы верхнего уровня из иерархии зависимостей, которые можно перечислить в качестве дополнительных параметров javac, указывая пакеты по мере их появления. Например, так, предполагая, что вам также нужно начать с other.Entry

javac -classpath . app/Main.java other/Entry.java 

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

6
ответ дан 18 December 2019 в 10:44
поделиться

Предоставьте им сценарий Ant, который выполняет сборку с правильными библиотеками в пути к классам и т. Д. Сценарий также может выполнять другие задачи, такие как создание JAR-файлов и т. Д.

Для этого необходимо, чтобы этот человек загрузил и установил Ant, но это не сложно. (И ничто не мешает вам предоставить им соответствующий дистрибутив Ant для установки. Или даже отправить им ZIP-файл дистрибутива, в котором есть копия Ant, «предустановленная» в дереве.)

Предоставление Ant-скрипта означает, что вы избегаете попадания в ловушки новичков Java, такие как забвение установки пути к классам, нахождение в неправильном каталоге, забвение перекомпиляции зависимых файлов и т. д. К тому же он более «профессиональный».

5
ответ дан 18 December 2019 в 10:44
поделиться

Вы можете создать файл со списком всех классов, которые вы хотите скомпилировать (извлеченных из man-страницы javac) -

Пример - Два файла Arg Вы можете создать два файла аргументов - один для параметров javac и другой для исходного файла- names: (Обратите внимание, что в следующих списках нет продолжения строки символов.)

  Создайте файл с именем options, содержащий:

-d классы
 -г
 -sourcepath /java/pubs/ws/1.3/src/share/classes

Создайте файл с именем classes, содержащий:

МойКласс1.java
 МойКласс2.java
 МойКласс3.java

Затем вы запустите javac с:
% @options @classes javac

Или вы можете использовать *.java в командной строке, например,

javac greetings/*.java

(Опять же из man javac)

Или почему бы вам просто не скомпилировать исходный код в JAR- файл, который ваш клиент может запустить с помощью JRE, особенно учитывая, что они не разбираются в Java?

2
ответ дан 18 December 2019 в 10:44
поделиться

javac BaseProgram.java скомпилирует BaseProgram.java из текущего каталога, и все классы, на которые он ссылается, доступные в исходном коде, в том же дереве каталогов.

Если BaseProgram ссылается на Class1 и Class2, и они доступны в Class1.java и Class2.java в одном каталоге, то они тоже будут скомпилированы. Аналогично, если они находятся в пакете и каталог пакета доступен, они будут скомпилированы.

3
ответ дан 18 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

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