Blackberry 5.0 - Добавить ссылку на проект библиотеки Java
Мне кажется, что то, чего я пытаюсь достичь, невероятно просто, но становится невероятно болезненным.
У меня есть ProjectA, который является проектом приложения BlackBerry. У меня есть ProjectB, который является проектом библиотеки Java. Я хочу сослаться на ProjectB от ProjectA. Я могу добавить ссылку, но когда я запускаю ProjectA, она не работает. У меня есть исходный код для обоих проектов, и оба скомпилированы с использованием компилятора Java 1.4
Я пробовал несколько вещей, но почему-то все не получается:
1. pre-verify.exe на ProjectB. Сбой "Ошибка создания файла JAR с ошибкой -1". Я вижу, что файлы cod и jar созданы, но когда добавляем файл jar в ProjectA и запускаем его, не работает Не уверен, что мне нужно добавить файл.cod.
2. Создайте новый проект библиотеки BlackBerry и создайте ссылку на него в ProjectA. Я создаю новый проект ProjectC, а затем добавляю в него банку ProjectB. Затем я добавляю ссылку на ProjectC в ProjectA. Но я не могу импортировать классы из ProjectB
Просьба предложить выход. Я использую Eclipse Plug-in и полагаюсь на возможности сборки Eclipse
2 ответа
Разобрался ответь сам. Публикация здесь на случай, если кто-то наткнется на это Вот шаги:
- Создайте свою библиотеку и экспортируйте как JAR (или загрузите сторонний JAR)
Запустите preverify.exe на JAR
preverify.exe -verbose -classpath "C: / Файлы программы /Research In Motion/BlackBerry JDE 5.0.0/lib/net_rim_api.jar" jarname.jar
Если вам повезет, вы не столкнетесь ни с какими проблемами, и все будет сделано. Но мне не повезло. Я получил ошибку ниже
Ошибка: нет такого файла или каталога. Ошибка создания файла JAR с ошибкой -1
Есть две возможные причины этого:
- jar.exe не добавлен в ваш путь. Если это так, добавьте его (находится в каталоге установки JAVA) в PATH
Параметр cvfm или -cfm на jar.exe не выполняется. Я не знаю причину, но способ исправить это, используя опцию -cf, указать файлы.class, но не использовать файл манифеста. вот
пример:"C: \ Program Files \ Java \ jdk1.6.0_26 \ bin \ jar.exe" -cf "output \ json-1.0.jar" tmp12996 /
tmp12996 содержит предварительно проверенные файлы.class. Вы можете столкнуться с другими проблемами, кроме тех, которые я перечислил выше.
После того, как баночка создана из вышеприведенного шага, убедитесь, что ее структура соответствует ожидаемой. Один из способов проверить это - переименовать файл.jar в.zip, распаковать его, а затем проверить. Если это не так, как вам нужно, вы можете изменить структуру и затем упаковать ее (хотя я бы не сделал каких-либо серьезных изменений)
Затем добавьте этот недавно созданный jar-файл в ваше приложение BlackBerry в качестве справочника, т.е. добавьте его в Java Build Path в своем затмении и проверьте его в окне "Порядок и экспорт".
Это оно! Вы хороши, чтобы пойти! Запустите ваше приложение!
Вы можете столкнуться с ошибкой, указывающей, что модуль содержит ошибки проверки при попытке запуска в симуляторе. Одной из возможных причин этой проблемы является то, что ваша библиотека (исходный JAR) содержит API-интерфейсы, несовместимые с J2ME или BB JRE. Вы не можете получить ошибку компилятора при самостоятельной сборке библиотеки, так как она скомпилирована для Java 1.4 (или какой-либо другой версии). Лучше всего разобраться в проблеме - переместить весь ваш код в проект BB App, а затем собрать его. Это скажет вам все вопросы заранее. Вы вносите изменения по мере необходимости, а затем перемещаете код обратно в библиотеку. Если у вас нет исходного кода для используемой вами библиотеки (например, сторонней библиотеки), вам может не повезти! Также помните, что могут быть и другие проблемы, кроме тех, на которые я натолкнулся и решил.
Я документирую это подробно, потому что мне понадобилось очень много времени, чтобы понять все это; и, мягко говоря, был самым расстраивающим!
Я нашел другое решение. Если вы получили ошибку -1 при предварительной проверке файла JAR, просто запустите приложение библиотеки один раз. Потому что, если вы не запустите приложение, папка результатов будет пустой. Убедитесь, что эта папка не пуста.