我们使用4.6代码签名工具签署了一个4.7 Blackberry应用程序。但是当第二次启动应用程序时,它会抛出'KeyCodeNumber异常'。
有人为什么我们得到这个例外的一些线索?
谢谢!
答案 0 :(得分:1)
KeyCodeNumber异常与验证过程有关。
黑莓published an article描述了如何防止验证错误:
开发Java应用程序时 你可以使用BlackBerry智能手机 遇到以下任何一种情况 验证错误或错误类似 以下内容:
验证错误3141模块 'MyMIDlet'有验证错误 (&###>)偏移< ###>。错误 启动MyMIDlet:模块'MyMIDlet' 有验证错误(&####>)at offset< ###&gt ;.“经常出现这些错误 在创建MIDlet时发生。他们是 本质上很难调试,因为 相同的错误消息可以应用于 问题的数量。
以下是防止或纠正验证错误的可能解决方案列表:
要解决此问题,请不要在构造函数中进行类调用,如以下示例所示:
Class1 class1;
String className = Class2.class.getName();
Class1 = new Class1(className);
从内部类中删除对静态实例变量的引用。例如,以下代码示例可能会导致错误:
public class MyOuterClass {
static int var;
class MyInnerClass {
public void doSomething() {
var = 7;
}
}
}
有几种方法可以删除这些引用,例如在外部类中为var创建get / set方法或修改逻辑以从MyOuterClass中拉出MyInnerClass。
正常构建过程 从java源文件编译 用javac命令,然后 运行preverify.exe文件然后 RAPC。添加以下命令行 javac的参数有助于避免 早期版本中的问题 RAPC:
javac.exe -source 1.3 -target 1.1
一些很长的方法都可以 导致验证错误。通过 将这些方法分解为帮手 方法,你可以减少 验证错误的可能性。
虽然不太可能,但有些非常 长方法定义(10或10) 更多参数),有些很长 不变的定义(长包 结构和/或长名称)可以 也会导致验证错误。