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

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

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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