Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Blackberry 启动xxx:Module'时出错;xxx-4和x27;有验证错误3337。(密码文件版本78)在黑莓?_Blackberry_Rim 5.0 - Fatal编程技术网

Blackberry 启动xxx:Module'时出错;xxx-4和x27;有验证错误3337。(密码文件版本78)在黑莓?

Blackberry 启动xxx:Module'时出错;xxx-4和x27;有验证错误3337。(密码文件版本78)在黑莓?,blackberry,rim-5.0,Blackberry,Rim 5.0,我已经使用JRE5.0实现了一个黑莓应用程序,它在任何带有OS5.0和OS6.0的设备上都运行良好 当我尝试在装有OS 7.0的9900上打开同一个应用程序时,出现了以下错误: 启动myAppName时出错:模块“myAppName-4”存在验证错误 3337(代码文件版本78) 其中myAppName是应用程序名(cod文件的名称) 如下图所示: 我检查了事件记录器,这里是它包含的内容(从旧到新): 系统-VM:linkmyappname 系统-VM:VECPs=my.Package.Na

我已经使用JRE5.0实现了一个黑莓应用程序,它在任何带有OS5.0和OS6.0的设备上都运行良好
当我尝试在装有OS 7.0的9900上打开同一个应用程序时,出现了以下错误:

启动myAppName时出错:模块“myAppName-4”存在验证错误 3337(代码文件版本78)


其中myAppName是应用程序名(cod文件的名称)

如下图所示:



我检查了事件记录器,这里是它包含的内容(从旧到新):

  • 系统-VM:linkmyappname
  • 系统-VM:VECPs=my.Package.Name.Containing.Screens
  • 系统-VM:VECCs=myscreenclassnames之一
  • 系统-VM:VECMm=functionInoneofMyCyclasses()
  • 模块“MyAppName-4”存在验证错误3337(代码文件版本78)
  • 链接器错误:MyAppName的“VerifyError”
  • 启动myAppName时出错:模块“myAppName-4”存在验证错误3337(代码文件版本78)
    内容如下:
  • E系统-JVM:INFOp=210000A,a='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.*调用。这些在黑莓智能手机上通常不起任何作用,但它们可能会导致验证错误

    • 删除未使用的导入语句

    • 明确指定每个函数或变量的访问权限。例如,确保每一个都指定为公共、私有或受保护

    • 如果您使用的是MIDlet,请确保MIDlet类声明为public

    • 如果COD文件已损坏或未正确签名,则可能会发生验证错误。请确保执行了干净的重建,并重新签署了应用程序。在BlackBerry智能手机上重新安装应用程序

    • 注释掉任何不可执行的代码。验证错误可能与主代码文件和库文件的大小有关。如果注释掉不可执行代码,则文件大小会更改,这可能会纠正问题

    • 如果创建了从RIM类继承的任何类,请更改在这些类中创建的任何自定义方法和成员的名称。这样可以确保在内部RIM类中没有命名任何同名的方法或成员

    • 如果您的应用程序使用的是BlackBerry®设备软件3.8或更高版本,则当使用早于版本4.0的BlackBerry®Java®开发环境(BlackBerry JDE)编译实现javax.microedition.rms.RecordStore类的应用程序时,会发生验证错误。如果应用程序使用RecordStore类的addRecordListener或removeRecordListener方法,则会发生这种情况。要解决此问题,请使用BlackBerry JDE 4.0或更高版本重新编译应用程序

    • BlackBerry®Java®虚拟机(BlackBerry JVM)如何直接在另一个类的构造函数中处理类的引用存在问题。以下是一个例子: Class1=newClass1(Class2.class.getName());要解决此问题,请不要在构造函数中进行类调用

    • 从内部类中删除对静态实例变量的引用。有几种方法可以删除这些引用,例如在外部类中为var创建get/set方法,或者修改逻辑以将MyInnerClass从MyOuterClass中拉出

    • 构建过程通常使用javac命令从java源文件编译,然后运行preverify.exe文件,然后运行RAPC。向javac添加以下命令行参数,以帮助避免RAPC早期版本中的问题: javac.exe-源1.3-目标1.1

    • 某些非常长的方法可能会导致验证错误。通过将这些方法分解为辅助方法,可以降低验证错误的可能性

    • 虽然不太可能,但一些非常长的方法定义(具有10个或更多参数)和一些非常长的常量定义(长包结构和/或长名称)也可能导致验证错误

    • 资料来源:


      另外,我还删除了代码中的“instanceOf”用法,因为您发现了最严重的BB错误。没有明确的解决步骤。请在这里了解更多信息