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

82

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

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

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

Ответы:

83

Файл 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.

Isurusndr
источник
34
Только мои два цента: вам не обязательно создавать файл манифеста. Для утилиты jar , если вы укажете флаг e вместо m , вам просто нужно будет указать точку входа (то есть основной класс) приложения, а не файл манифеста. Пример:jar cvfe jarexample.jar com.example.jar.JarExample *.class
Powerslave
1
Если вы создаете файл MANIFEST.MF, не забудьте завершить последнюю строку разрывом строки. В Windows просто добавьте пустую строку в конце. В противном случае последний атрибут не попадет в файл jar. В этом особом случае атрибут Main-Class будет отсутствовать.
Дэвид
36

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

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

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

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

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

Twinscode
источник
Конфигурация запуска: <MainClasssName> - <ProjectName>
corlaez,
17

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

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 к другому ответу.

Река
источник
Error: Could not find or load main class mtx.testClass Caused by: java.lang.ClassNotFoundException: mtx.testClass
Получаю
Есть testClassопределенные в одном из ваших .classфайлов? Перед .javaзапуском этой команды убедитесь, что вы скомпилировали файлы source ( ). Кроме того, обычно ваш класс должен быть UpperCamelCase, вместо этого вы можете попробовать переименовать его в TestClass.
River
4

Если вы используете 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 будет расположен в целевом каталоге.

Вилли Ментцель
источник
Вариант чем выше.
Вишва Ратна
0

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

Прежде всего, обязательно загрузите и добавьте 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и он будет генерировать банку файл как - то вроде ProjectName-0.0.1-SNAPSHOT.jarпод targetкаталог.

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

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

Бадри Паудель
источник