Исключения для KeyCodeNumber имеют todo с процессом проверки.
Blackberry published an article, описывающий, как предотвратить ошибки проверки:
When developing Java applications for the BlackBerry smartphone, you may encounter any of the following verification errors or errors similar to the following:
Verification Error 3141 Module 'MyMIDlet' has verification error (<###>) at offset <###>. Error starting MyMIDlet: Module 'MyMIDlet' has verification error (<####>) at offset <###>." These errors often occur when creating MIDlets. They are inherently hard to debug because the same error message can apply to a number of problems.
Ниже приведен список возможных решений для предотвращения или исправления ошибок проверки:
- Если вы начали путем создания Java Архива (JAR), а затем использовал Компилятор прикладной программы RIM (RAPC) для создания файлов .cod, make уверен, что вы отключите запутывание, когда создание файла JAR. Компилятор RAPC выполняет свою собственную обфускацию , и могут возникнуть проблемы, если код уже запутан.
- Удалите любые вызовы System.out. *. Эти вообще ничего не делают на смартфоне BlackBerry , но они могут привести к ошибкам проверки.
- Удалить неиспользованные операторы импорта.
- Явно указать доступ для каждой функции или переменной. Для примера убедитесь, что каждый из них указан как открытый, закрытый или защищенный.
- Если вы работаете с MIDlet, убедитесь, что класс MIDlet объявлен как открытый.
- Ошибки проверки могут возникнуть, если файл COD поврежден или был не подписан правильно. Убедитесь, что вы выполняете чистую перестройку, и что вы повторно подписываете свое приложение. Заново установите приложение на смартфон BlackBerry .
- Прокомментировать любой неисполняемый код. Ошибки проверки могут быть связаны с размером основного файла и библиотечными файлами. Если у вас , прокомментируйте неисполнимый код, изменение размера файла, что может исправить ошибку .
- Если вы создали какие-либо классы, которые наследуют от классов RIM, изменить имя каких-либо пользовательских методов и членов, которые вы создали в этих классов. Это гарантирует, что вы не назвали ни одного метода или с одноименным именем в пределах внутренних классов RIM .
- Если ваше приложение использует BlackBerry® Device Software 3.8 или позже, ошибки проверки происходят , когда приложение, которое реализует класс javax.microedition.rms.RecordStore скомпилирован с помощью BlackBerry® Java® среды разработки (BlackBerry JDE) раньше, чем версии 4.0. Это происходит, если приложение использует либо addRecordListener, либо removeRecordListener-методы класса RecordStore. Чтобы устранить эту проблему , перекомпилируйте приложение с использованием BlackBerry JDE 4.0 или новее.
- Существует проблема с тем, как BlackBerry® Java® Virtual Machine (BlackBerry JVM) обрабатывает реферирование класса непосредственно в конструкторе другого класса. Ниже приведен пример: Class1 class1 = new Class1 (Class2.class.getName());
Чтобы обойти эту проблему, не делают вызов класса в конструкторе, как показано в следующем примере:
Class1 class1;
String className = Class2.class.getName();
Class1 = new Class1(className);
Удалить упоминание статической переменной экземпляра из внутреннего класса. Например, следующий пример кода может привести к ошибке:
public class MyOuterClass {
static int var;
class MyInnerClass {
public void doSomething() {
var = 7;
}
}
}
Есть несколько способов, вы можете удалить эти ссылки, такие как создание методов получения/установки для вар во внешнем классе или модифицируя логику тянуть MyInnerClass из MyOuterClass.
Процедура сборки обычно компилируется из исходного файла Java с командой JAVAC, а затем работает preverify.exe файл, а затем РААС. Добавьте следующую командную строку аргументы JAVAC, чтобы помочь избежать проблем в более ранних версиях РААС:
javac.exe -source 1,3 -target 1,1
Некоторые методы, которые очень долго могут причиной проверки ошибки. К , перебирая эти методы в вспомогательные методы , вы можете уменьшить вероятность ошибок проверки .
Хотя не так, вероятно, некоторые очень длинные определений методов (с 10 или более параметров), и некоторые очень длинные постоянных определений (длинный пакет структуры и/или длинные имена) может также вызвать ошибки проверки.
Отличный пост, но это почему мобильный разработчик INSANE;) – drubin