Ошибка предварительной проверки класса com.google.common.collect.Ordering в blackberry
Я получил эту ошибку, когда я включил guava-11.0-rc1.jar, который содержит пакет com.google.common.*
, Но когда я пытаюсь упаковать его, он выдает ошибку:
Ошибка предварительной проверки класса com.google.common.collect.Ordering MyApp line 0
Проблема упаковки BlackBerry
Кто-нибудь может сказать мне, что можно сделать, чтобы решить эту проблему? Заранее спасибо.
1 ответ
Убедитесь, что классы в этой библиотеке совместимы с Java-ME. Помните, что CLDC является подмножеством Java SE, и эквивалентный уровень компиляции рабочего стола будет 1,2
Если они были совместимы, то для устранения ошибки предварительной проверки вы должны предварительно проверить свою банку. Вам может быть интересно, что такое предварительное подтверждение. В этом ответе есть хорошее объяснение.
Предварительная проверка обычно выполняется (или должна выполняться) с помощью плагина Eclipse, но некоторые версии этого не делают. Если это ваш случай, вы должны сделать это вручную. В вашей папке JDE есть инструмент под названием preverify
, Вы можете найти его по пути, который обычно выглядит на машине с Windows:
(1) C:\Program files\Research In Motion\BlackBerry JDE <vers>\bin\
Вам также понадобится библиотека под названием net_rim_api.jar
расположен в пути, как это:
(2) C:\Program files\Research In Motion\BlackBerry JDE <vers>\lib\net_rim_api.jar`
Это все, что вам нужно для запуска команды. Откройте командную строку и перейдите в папку bin (1). Затем введите:
preverify -classpath <classpath for lib> -d <output directory> <file to preverify>
Куда:
<classpath for lib>
это путь в (2)<output directory>
каталог, в котором будет сохранена предварительно проверенная банка<file to preverify>
это абсолютный путь к файлу, который вы хотите проверить (guava-11.0-rc1.jar в вашем случае)
Если все прошло хорошо, теперь у вас будет новая банка <output directory>
который немного больше, чем входной файл JAR. Это тот, который вы должны включить в свой проект. preverify
Инструмент не меняет оригинальную банку.