对于那些感兴趣的人,我找到了解决方案。
在日志中有:
a System - VM:VECCs=oneOfMyScreenClassNames
a System - VM:VECMm=functionInOneOfMyClasses()
我在日志中指示的整个班级“oneOfMyScreenClassNames”中做了接下来的步骤
以下是步骤:
如果您从构建 Java Archive (JAR) 文件开始,然后使用 RIM 应用程序编译器 (RAPC) 创建 .cod 文件,请确保在构建 JAR 文件时关闭混淆。RAPC 编译器执行自己的混淆,如果代码已经被混淆,则可能会出现问题。
删除任何 System.out.* 调用。这些通常在 BlackBerry 智能手机上不起作用,但它们可能会导致验证错误。
删除未使用的导入语句。
明确指定每个函数或变量的访问权限。例如,确保将每一项都指定为公共、私有或受保护。
如果您正在使用 MIDlet,请确保将 MIDlet 类声明为公共的。
如果 COD 文件已损坏或未正确签名,则可能会出现验证错误。确保您执行干净的重建并重新签署您的应用程序。在 BlackBerry 智能手机上重新安装应用程序。
注释掉任何不可执行的代码。验证错误可能与主代码文件和库文件的大小有关。如果您注释掉不可执行的代码,文件大小会发生变化,这可能会纠正问题。
如果您创建了从 RIM 类继承的任何类,请更改您在这些类中创建的任何自定义方法和成员的名称。这确保您没有在内部 RIM 类中命名任何方法或同名成员。
如果您的应用程序使用的是 BlackBerry® Device Software 3.8 或更高版本,当使用 BlackBerry® Java® Development Environment (BlackBerry JDE) 4.0 之前的版本编译实现 javax.microedition.rms.RecordStore 类的应用程序时,会出现验证错误。如果应用程序使用 RecordStore 类的 addRecordListener 或 removeRecordListener 方法,就会发生这种情况。要解决此问题,请使用 BlackBerry JDE 4.0 或更高版本重新编译应用程序。
BlackBerry® Java® Virtual Machine (BlackBerry JVM) 如何在另一个类的构造函数中直接处理一个类的引用存在问题。下面是一个例子: Class1 class1= new Class1(Class2.class.getName()); 要解决此问题,请不要在构造函数中进行类调用
从内部类中删除对静态实例变量的引用。有几种方法可以删除这些引用,例如在外部类中为 var 创建 get/set 方法或修改逻辑以将 MyInnerClass 拉出 MyOuterClass。
构建过程通常使用 javac 命令从 java 源文件编译,然后运行 preverify.exe 文件,然后运行 RAPC。将以下命令行参数添加到 javac 以帮助避免早期版本的 RAPC 中的问题: javac.exe -source 1.3 -target 1.1
一些很长的方法可能会导致验证错误。通过将这些方法分解为辅助方法,您可以减少验证错误的可能性。
虽然不太可能,但一些非常长的方法定义(具有 10 个或更多参数)和一些非常长的常量定义(长包结构和/或长名称)也可能导致验证错误。
来源:http ://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/832062/Support_-_Preventing_verification_errors.html?nodeid=1499031&vernum=0
PS,我还删除了代码中的“ instanceOf ”用法