2013-07-18 2 views
1

В течение многих лет я использую IDE (Eclipse) для компиляции моих файлов jar для меня, через годы, когда я узнал о том, как они работают, но я до сих пор не совсем понимаю, как банка знает, где основным методом является то, что мне также интересно, как просто (или нет) его компилировать вручную.

У меня есть (вроде) IDE. Я работаю над этим, чтобы иметь возможность компилировать и запускать банку, которая включает в себя как файл от пользователя, так и банку или кучу других классов (API), Я видел несколько вопросов, в которых упоминался класс Java JavaCompiler, но никогда не давал демонстрационный код, и, похоже, рядом никто не знает, как скомпилировать вручную, поэтому я хотел бы внести свой вклад. Итак, как я могу создать файл jar с помощью java-кода? Просьба предоставить демонстрационный код.Компиляция Jar с java

+0

Здесь .. http://stackoverflow.com/questions/5258159/how-to-make-an-executable-jar-file – vidit

+0

«В Eclipse вы можете сделать это просто так:», «Скомпилируйте свои классы. " - не то, что я спрашиваю, «как я могу создать файл jar с помощью java-кода?» –

+0

Java включает полностью функциональный набор утилит zip-файла (java.util.zip), который можно использовать для создания файлов jar.И есть несколько дополнительных «приятных» возможностей в java.util.jar. –

ответ

4

Я до сих пор не в полной мере понять, как баночка знает, где основным методом является

Это задание в manifest file.

Мне также интересно, как просто (или нет) его нужно скомпилировать вручную.

Это довольно просто - вы используете jar tool после того, как вы создали файлы классов.

Давайте сделаем полную прогулку.

Создайте каталог под названием src и каталог под названием bin. Под src создайте каталог demo и файл с именем Test.java в этом каталоге:

package demo; 

public class Test { 
    public static void main(String[] args) { 
     System.out.println("Working!"); 
    } 
} 

компилировать код: (. Это будет работать как на Unix и Windows,)

javac -d bin src/demo/Test.java 

Затем создайте файл манифеста с именем manifest.txt - неважно, где он идет, но я просто сохраню его в src на данный момент:

Main-Class: demo.Test 

Теперь построить банку файл:

jar cfm test.jar src\manifest.txt -C bin demo/Test.class 

И запустить его:

java -jar test.jar 

В эти дни вы можете указать точку входа в командной строке вместо создания файла манифеста себя:

jar cfe test.jar demo.Test -C bin demo/Test.class 

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

+0

Моя IDE написана на Java и должна быть скомпилирована для пользователя, как описано , Могу ли я заставить Java запускать команды командной строки? Или даже если не создать необходимый пакетный файл? –

+0

@LeeAllan: Вы * можете *, но вам будет намного лучше использовать класс JavaCompiler, с которым вы связаны. Аналогично, вы можете использовать классы в 'java.util.jar' для создания файлов jar программно. –