错误开始xxx:模块'xxx-4'验证错误3337.(Codfile版本78)在黑莓?
我实现了使用JRE5.0黑莓应用程序,它与OS5.0和OS6.0
任何设备上运行良好。当我试图打开9900具有OS 7.0相同的应用程序,我有以下错误:
错误开始xxx:模块'xxx-4'验证错误3337.(Codfile版本78)在黑莓?
Error Starting myAppName: Module 'MyAppName-4' has verification error 3337. (Codfile version 78)
其中myAppName是应用程序名(鳕鱼文件的名称)
如下面的图像中:
我检查了事件记录器,在这里它包含的内容(新旧版本):
- 一个系统 - VM:LINK MyAppName
- 一个系统 - VM:VECPs = my.Package.Name.Containing.Screens
- 一个系统 - VM:VECCs = oneOfMyScreenClassNames
- 一个系统 - VM:VECMm = functionInOneOfMyClasses()
- 模块 'MyAppName-4' 具有验证错误3337(codfile 78版)
- 链接错误:“的VerifyError '为MyApp命名
- 错误起始myAppName:模块 'MyAppName-4' 具有验证错误3337(codfile 78版)
这里是内容: - 评价体系 - JVM:INFOP = 2100000a,一个='7.0 .0.296',o ='4.0.0.127',h = 7001204
对于那些有兴趣的人,我找到了解决方案。
在日志中有:
a System - VM:VECCs=oneOfMyScreenClassNames
a System - VM:VECMm=functionInOneOfMyClasses()
我在全班同学 “oneOfMyScreenClassNames” 下一步原木
这里表示的步骤是:
如果您首先构建Java归档(JAR)文件,然后使用RIM应用程序编译器(RAPC)创建.cod文件,确保在关闭时关闭混淆构建JAR文件。 RAPC编译器执行自己的混淆处理,如果代码已被混淆,则可能会发生问题。
删除任何的System.out。*电话。这些通常不会在BlackBerry智能手机上执行任何操作,但可能会导致验证错误。
关掉不用的import语句。
显式指定为每个函数或变量的访问。例如,确保每个指定为公共,私人或受保护的。
如果您正在使用一个MIDlet工作,确保MIDlet类被声明为public。
如果COD文件损坏或签名不正确,可能会发生验证错误。确保您执行干净的重建,并重新签署您的应用程序。在BlackBerry智能手机上重新安装应用程序。
注释掉任何不可执行的代码。验证错误可能与主代码文件和库文件的大小有关。如果注释掉不可执行的代码,则文件大小会发生变化,这可能会纠正问题。
如果您创建了任何继承自RIM类的类,请更改您在这些类中创建的所有自定义方法和成员的名称。这确保您没有在内部RIM类中命名任何方法或名称相同的成员。
如果您的应用程序使用的是BlackBerry®Device Software 3.8或更高版本,那么当实现javax.microedition.rms.RecordStore类的应用程序使用BlackBerry®Java®Development Environment(BlackBerry JDE)编译之前,会发生验证错误版本4.0。如果应用程序使用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个或更多参数)和一些非常长的常量定义(长包结构和/或长名称)也可能导致验证错误。
PS,我也删除 “}这种” 使用代码
你抓住了最坏的可用BB错误。没有明确的解决步骤。请在这里找到更多http://stackoverflow.com/questions/4459239/how-to-debug-a-blackberry-verification-error – 2012-08-09 12:32:19