Как упаковать внешний 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). Есть две возможности, как решить эту проблему
- Вы можете разархивировать требуемый JAR и добавить файлы классов в свой jar,
jar -u
может помочь вам (это кажется трудным, но если вы используете ant или maven, вы настроите это один раз) - Вы можете попробовать использовать заголовки MANIFEST