Java Eclipse: разница между экспортом как JAR и экспортом как Runnable JAR

87

В чем разница в eclipse между экспортом в виде файла JAR и экспортом в виде файла Runnable JAR? Разве они оба не работают? Какие плюсы / минусы у каждого?

а на самом деле
источник

Ответы:

98

Runnable jar содержит файл MANIFEST.MF, который определяет основной класс, который будет выполняться при запуске jar.

Неиспользуемые jar-файлы - это просто библиотеки классов, которые можно добавить в путь к классам, чтобы код можно было повторно использовать (он также содержит файл манифеста, но не содержит основного класса)

Божо
источник
Когда мы экспортируем файл как jar, а не как runnable jar, мы должны указать основной класс и путь к классам библиотеки в manifest.mf.
MR AND
20

Запускаемый jar - это jar-файл, в котором есть встроенный файл манифеста, который включает объявление «Main-Class:». «Главный класс» должен быть определен, чтобы среда выполнения java знала, какой класс вызывать, когда jar «запущен». Если jar не включает манифест с «Main-Class:», он не считается «работающим jar» - это просто библиотека кода Java.

Я бы предположил, что это разница в том, как Eclipse экспортирует банку, но не уверен на 100%.

См. Эту ссылку для получения дополнительной информации: http://www.skylit.com/javamethods/faqs/createjar.html

Энди Уайт
источник
17

В стандартном файле JAR вы должны указать класс с основным методом в командной строке при запуске jar. В работающем JAR есть файл манифеста, который будет содержать эту информацию, поэтому вы можете просто ввести его java -jar myRunnable.jarили просто дважды щелкнуть по нему.

Эрик-Карл
источник
0

В моем случае я использовал экспорт как банку, когда у меня был весь основной класс и все каталоги пути к библиотекам, указанные в manifest.mf. Если несколько приложений используют одну и ту же библиотеку, нет необходимости экспортировать общую библиотеку для каждой банки. Это ускоряет работу банки. Но во многих случаях из-за проблем с конфигурацией в другом пути к классу сервера невозможно получить доступ к библиотеке, и в этом случае имеет смысл экспортировать исполняемый jar, который замедляет выполнение файла и делает его большим.

Г-Н И
источник