Как упаковать внешний jar в выходной файл jar в eclipse

В настоящее время я работаю с J2me от Mobile Tools for Java (MTJ) на Eclipse. Моя программа должна шифровать SMS-сообщения RSA, поэтому я пытаюсь использовать библиотеку bouncycastle. Я загружаю bouncycatle версии 1.47 и добавляю в свой buildpath. Никаких проблем не возникает при создании проекта. Но когда я пытаюсь запустить на эмуляторе, я получаю эту ошибку:

TRACE: <at java.lang.NoClassDefFoundError: org/bouncycastle/crypto/engines/RSAEngine>, startApp threw an Exception

Это обычная проблема, NoClassDefFound. Чтобы решить эту проблему, я знаю, что должен включить файл класса bouncycastle в classpath. Но тут возникает проблема, я не могу упаковать файл класса bouncycastle в банку, которую создал MTJ. Для обычного проекта все, что мне нужно сделать, это поставить галочку на вкладке "Порядок и экспорт", чтобы все файлы классов в "отмеченной галочкой" библиотеке были упакованы в выходной jar. Я делаю то же самое здесь, но после того, как я создаю пакет, я проверяю новый файл jar, и класс bouncycastle отсутствует (проверьте с помощью WinRar). Я сделал кое-что, я использую Eclipse Indigo Release 2, идентификатор сборки: 20120216-1857, MTJ версия 1.1.2. Я также пытался создать пакет с помощью Eclipse Pulsar 1.3.1, но проблема все еще сохраняется. Есть ли какие-либо предложения? это ошибка?

С уважением.

1 ответ

Решение

"Заказ и экспорт" не работает так, как вы думаете. Если у вас есть два проекта - ProjectA и ProjectB, а ProjectA зависит от ProjectA, то, если ProjectA нужен some.jar, и вы обнаружите, что ProjectB также нужен some.jar, тогда "Порядок и экспорт" для этого jar в ProjectA делает его "видимым" также для ProjectB.

Для файлов JAR вы не можете добавить еще один jar в файлы JAR (это работает для WAR и EAR). Есть две возможности, как решить эту проблему

  1. Вы можете разархивировать требуемый JAR и добавить файлы классов в свой jar, jar -u может помочь вам (это кажется трудным, но если вы используете ant или maven, вы настроите это один раз)
  2. Вы можете попробовать использовать заголовки MANIFEST
Другие вопросы по тегам