Как исключить внешний JAR при создании исполняемого JAR в затмении или командной строке? - PullRequest
5 голосов
/ 24 февраля 2009

Я написал программу в Eclipse IDE, которая использует класс BouncyProvider из BouncyCastle.jar. Поэтому для компиляции моего класса я добавил BouncyCastle.jar в мой путь к классам проекта, и он отлично компилируется.

Теперь я хочу экспортировать свой проект как Runnable JAR, поэтому, когда я делаю это из Eclipse, он по умолчанию добавляет классы BouncyCastle.jar также в этот исполняемый jar.

Но я хочу, чтобы мой jar приложения и BouncyCastle.jar отличались друг от друга.

Как мне этого добиться? Кто-нибудь может помочь, пожалуйста?

Ответы [ 3 ]

3 голосов
/ 25 февраля 2009

Похоже, вы хотите использовать мастер «Экспорт файла JAR» вместо мастера «Экспорт исполняемого файла JAR». При экспорте файла runnable jar Eclipse пытается упаковать все необходимое для запуска приложения в один архив. С другой стороны, мастер «Экспорт файла JAR» дает вам больший контроль над тем, что упаковано в архив. Вы все еще можете создать исполняемый файл jar, но вы должны обязательно включить BouncyCastle.jar в путь к классам при выполнении jar. Вот пошаговые инструкции:

  1. Нажмите «Файл | Экспорт». Экспорт всплывающее диалоговое окно.
  2. Разверните папку "Java" и выберите «Файл JAR» (не «Запускаемый JAR» file "). Нажмите Next. В файле JAR страницу спецификации, выберите классы, которые вы хотите включить в банку файл, и укажите имя JAR-файл для создания. Нажмите Далее.
  3. На странице параметров упаковки JAR выберите варианты, подходящие для вас. Значения по умолчанию, вероятно, в порядке. Нажмите Далее.
  4. По спецификации JAR, не забудьте выбрать «Основной класс» для вашего файла jar . Это класс, который будет выполнен, когда Вы выполняете файл JAR. Если вы оставьте это поле пустым, файл jar будет не может быть запущен . Нажмите Готово, чтобы создайте файл jar.

Вы должны иметь возможность выполнить файл jar, выполнив " java -jar myjarfile.jar -classpath BouncyCastle.jar " из командной строки.

1 голос
/ 24 февраля 2009

К сожалению, похоже, что вы на самом деле не можете этого сделать. JAR не может использовать другой JAR, который хранится внутри себя.

Я бы сказал, если у вас нет веских причин, по которым вы не можете распаковать свой BouncyCastle.jar (например, проблемы с лицензированием?)

просто дайте ему распаковать (что можно сделать, добавив BouncyCastle.jar в качестве внешнего архива в Eclipse:)

Right-click on your project
Build Path...
Add External Archives...
Add your archive
Export as runnable JAR)

и следите за именами пакетов на наличие конфликтов.

Вот открытый идентификатор ошибки Java, который я нашел, описывающий вашу ситуацию

Может помочь One-JAR - решение с открытым исходным кодом в вашей ситуации

0 голосов
/ 27 февраля 2009

Похоже, это было добавлено в Eclipse 3.5 Milestone 5. См. News для последней сборки и ошибка 219530

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...