Как сделать исполняемый файл JAR?

У меня есть программа, состоящая из двух простых файлов Java Swing.

Как мне сделать исполняемый файл JAR для моей программы?


person Reuben    schedule 10.03.2011    source источник
comment
Что ты спрашиваешь? Как выполнить jar или как создать исполняемый файл из jar (одна команда, например run.cmd)?   -  person AlikElzin-kilaka    schedule 10.05.2015
comment
По теме: superuser.com/questions/912955/   -  person AlikElzin-kilaka    schedule 10.05.2015


Ответы (5)


Файл jar - это просто файл, содержащий набор файлов java. Чтобы сделать файл jar исполняемым, вам необходимо указать, где находится класс main в файле jar. Пример кода будет следующим.

public class JarExample {

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // your logic here
            }
        });
    }
}

Скомпилируйте свои классы. Чтобы создать банку, вам также необходимо создать файл манифеста (MANIFEST.MF). Например,

Manifest-Version: 1.0
Main-Class: JarExample

Поместите скомпилированные файлы выходных классов (JarExample.class, JarExample $ 1.class) и файл манифеста в одну папку. В командной строке перейдите в папку, в которой размещены ваши файлы, и создайте банку с помощью команды jar. Например (если вы назовете свой файл манифеста как jexample.mf)

jar cfm jarexample.jar jexample.mf *.class

Будет создан исполняемый файл jarexample.jar.

person isurusndr    schedule 10.03.2011
comment
Только мои два цента: вам не обязательно создавать файл манифеста. Для утилиты jar, если вы укажете флаг e вместо m, вам просто нужно указать точку входа (то есть основной класс) приложения, а не файл манифеста. Пример: jar cvfe jarexample.jar com.example.jar.JarExample *.class - person Powerslave; 24.03.2015
comment
Если вы создаете файл MANIFEST.MF, не забудьте завершить последнюю строку разрывом строки. В Windows просто добавьте пустую строку в конце. В противном случае последний атрибут не попадет в файл jar. В этом особом случае атрибут Main-Class будет отсутствовать. - person David; 08.03.2019
comment
Требуется ли для команды jar отдельная переменная пути? Я могу использовать команды java и javac без проблем, но команда jar выдает сообщение об ошибке 'jar' is not recognized as an internal or external command. - person QWERTY; 03.02.2021

В Eclipse это можно сделать просто следующим образом:

Щелкните правой кнопкой мыши свой проект Java и выберите Экспорт.

Выберите Java - ›Запускаемый файл JAR -› Далее.

Выберите конфигурацию запуска и выберите файл проекта в качестве основного класса.

Выберите папку назначения, в которую вы хотите ее сохранить, и нажмите «Готово».

person Twinscode    schedule 23.03.2013
comment
Конфигурация запуска: ‹MainClasssName› - ‹ProjectName› - person corlaez; 14.04.2016

Вот он в одной строке:

jar cvfe myjar.jar package.MainClass *.class

где MainClass - это класс с вашим main методом, а package - это пакет MainClass.

Обратите внимание, что перед этим вы должны скомпилировать ваши .java файлы в .class файлы.

c  create new archive
v  generate verbose output on standard output
f  specify archive file name
e  specify application entry point for stand-alone application bundled into an executable jar file

Этот ответ вдохновлен комментарием Powerslave к другому ответу.

person River    schedule 09.11.2017
comment
Я получаю сообщение об ошибке Error: Could not find or load main class mtx.testClass Caused by: java.lang.ClassNotFoundException: mtx.testClass - person Anton Stafeyev; 19.08.2020
comment
testClass определен в одном из ваших .class файлов? Перед запуском этой команды убедитесь, что вы скомпилировали файлы исходного кода (.java). Кроме того, обычно ваш класс должен быть UpperCamelCase, вместо этого вы можете попробовать переименовать его в TestClass. - person River; 25.08.2020

Если вы используете maven, добавьте в файл pom.xml следующее:

<plugin>
    <!-- Build an executable JAR -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.path.to.YourMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Затем вы можете запустить mvn package. Файл jar будет расположен в каталоге target.

person Willi Mentzel    schedule 29.11.2019
comment
Вариант чем выше. - person Vishwa Ratna; 06.02.2020

Слишком поздно отвечать на этот вопрос. Но если кто-то сейчас ищет этот ответ, я заставил его работать без ошибок.

Прежде всего обязательно загрузите и добавьте maven в путь. [mvn --version] предоставит вам спецификации версии, если вы правильно добавили путь.

Теперь добавьте следующий код в проект maven [pom.xml], в следующем коде замените его собственной точкой входа в основной файл, например, [com.example.test.Test] .

      <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                    <mainClass>
            your_package_to_class_that_contains_main_file .MainFileName</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

Теперь перейдите в командную строку [CMD] в своем проекте и введите mvn package, и он сгенерирует файл jar в виде чего-то вроде ProjectName-0.0.1-SNAPSHOT.jar в каталоге target.

Теперь перейдите к целевому каталогу по cd target.

Наконец, введите java -jar jar-file-name.jar, и да, это должно работать успешно, если в вашей программе нет ошибок.

person Badri Paudel    schedule 18.07.2020
comment
Это специальное решение для Maven и, очевидно, не работает для тех, кто не использует Maven в качестве своей системы сборки. - person Michael; 17.02.2021