Таким образом, я должен отправить проект Java кому-то за пределами нашей компании, у кого нет опыта с Java, и они должны скомпилировать его. Существует ли простой способ сделать это на командной строке окон, которая не требует выписывания списков файлов?
Лично я думаю, что javac должен быть достаточно умным для обработки
javac *
когда в папке только под корнем иерархии пакета. Есть ли на этой приблизительной оценке что-нибудь?
Править: Исходная структура папок сложна и никакого однократного класса, таким образом, некоторые идеи, упомянутые до сих пор, не будут работать. Спасибо, хотя! Думайте 9 уровней глубоко с кодом на многих уровнях.
Из папки, представляющей основу иерархии пакетов, предполагая, что ваш класс начальной точки называется Main, в пакете под названием app,
javac -classpath . app/Main.java
должны быть сгенерированы правильные определения классов. Компилятор обнаружит зависимости и скомпилирует все остальные классы, которые необходимы. Файлы классов появятся в том же каталоге, что и их исходные файлы.
Если, как вы говорите, у вас есть "более одного входящего" класса, вам придется, по крайней мере, определить все эти классы верхнего уровня из иерархии зависимостей, которые можно перечислить в качестве дополнительных параметров javac, указывая пакеты по мере их появления. Например, так, предполагая, что вам также нужно начать с other.Entry
javac -classpath . app/Main.java other/Entry.java
Обратите внимание, что вам все равно придется выяснить, какие из ваших классов являются вершинами независимых иерархий зависимостей, независимо от того, создаете ли вы скрипт ant или делаете это таким образом.
Предоставьте им сценарий Ant, который выполняет сборку с правильными библиотеками в пути к классам и т. Д. Сценарий также может выполнять другие задачи, такие как создание JAR-файлов и т. Д.
Для этого необходимо, чтобы этот человек загрузил и установил Ant, но это не сложно. (И ничто не мешает вам предоставить им соответствующий дистрибутив Ant для установки. Или даже отправить им ZIP-файл дистрибутива, в котором есть копия Ant, «предустановленная» в дереве.)
Предоставление Ant-скрипта означает, что вы избегаете попадания в ловушки новичков Java, такие как забвение установки пути к классам, нахождение в неправильном каталоге, забвение перекомпиляции зависимых файлов и т. д. К тому же он более «профессиональный».
Вы можете создать файл со списком всех классов, которые вы хотите скомпилировать (извлеченных из 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?
javac BaseProgram.java
скомпилирует BaseProgram.java из текущего каталога, и все классы, на которые он ссылается, доступные в исходном коде, в том же дереве каталогов.
Если BaseProgram ссылается на Class1 и Class2, и они доступны в Class1.java и Class2.java в одном каталоге, то они тоже будут скомпилированы. Аналогично, если они находятся в пакете и каталог пакета доступен, они будут скомпилированы.