Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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
Android Dalvik虚拟机给出错误“;VFY:调用类型与方法类型…”;运行Mozilla Rhino预编译的javascript时_Android - Fatal编程技术网

Android Dalvik虚拟机给出错误“;VFY:调用类型与方法类型…”;运行Mozilla Rhino预编译的javascript时

Android Dalvik虚拟机给出错误“;VFY:调用类型与方法类型…”;运行Mozilla Rhino预编译的javascript时,android,Android,应用程序使用Mozilla Rhino 1.7R4版预编译javascript文件并在运行时执行。在DVM上运行时执行时,加载预编译的javascript类文件时会出现以下错误: 12-23 16:34:10.560: W/dalvikvm(12965): VFY: invoke type does not match method type of Lcom/test/converted/script;._c_script_0_literal1 12-23 16:34:10.560: W/dal

应用程序使用Mozilla Rhino 1.7R4版预编译javascript文件并在运行时执行。在DVM上运行时执行时,加载预编译的javascript类文件时会出现以下错误:

12-23 16:34:10.560: W/dalvikvm(12965): VFY: invoke type does not match method type of Lcom/test/converted/script;._c_script_0_literal1
12-23 16:34:10.560: W/dalvikvm(12965): VFY:  rejecting opcode 0x6e at 0x000c
12-23 16:34:10.560: W/dalvikvm(12965): VFY:  rejected Lcom/test/converted/script;._c_script_0 (Lcom/test/converted/script;Lorg/mozilla/javascript/Context;Lorg/mozilla/javascript/Scriptable;Lorg/mozilla/javascript/Scriptable;[Ljava/lang/Object;)Ljava/lang/Object;
12-23 16:34:10.560: W/dalvikvm(12965): Verifier rejected class Lcom/test/converted/script;
12-23 16:34:10.560: W/System.err(12965): java.lang.ClassNotFoundException: com.test.converted.script
12-23 16:34:10.560: W/System.err(12965):    at java.lang.Class.classForName(Native Method)
12-23 16:34:10.560: W/System.err(12965):    at java.lang.Class.forName(Class.java:217)
12-23 16:34:10.560: W/System.err(12965):    at java.lang.Class.forName(Class.java:172)
12-23 16:34:10.560: W/System.err(12965):    at com.notworkingrhino.AppImpl.populateScopeFromCompiledScriptClass(AppImpl.java:36)
12-23 16:34:10.560: W/System.err(12965):    at com.notworkingrhino.AppImpl.loadScripts(AppImpl.java:25)
12-23 16:34:10.560: W/System.err(12965):    at com.notworkingrhino.AppImpl.onCreate(AppImpl.java:17)
12-23 16:34:10.560: W/System.err(12965):    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:981)
12-23 16:34:10.560: W/System.err(12965):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4522)
12-23 16:34:10.560: W/System.err(12965):    at android.app.ActivityThread.access$1300(ActivityThread.java:139)
12-23 16:34:10.560: W/System.err(12965):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306)
12-23 16:34:10.560: W/System.err(12965):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-23 16:34:10.560: W/System.err(12965):    at android.os.Looper.loop(Looper.java:156)
12-23 16:34:10.560: W/System.err(12965):    at android.app.ActivityThread.main(ActivityThread.java:5005)
12-23 16:34:10.560: W/System.err(12965):    at java.lang.reflect.Method.invokeNative(Native Method)
12-23 16:34:10.560: W/System.err(12965):    at java.lang.reflect.Method.invoke(Method.java:511)
12-23 16:34:10.560: W/System.err(12965):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-23 16:34:10.560: W/System.err(12965):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-23 16:34:10.560: W/System.err(12965):    at dalvik.system.NativeStart.main(Native Method)
12-23 16:34:10.560: W/System.err(12965): Caused by: java.lang.VerifyError: com/test/converted/script
12-23 16:34:10.560: W/System.err(12965):    ... 18 more
在进一步研究这个问题时,我发现“_c_script_0_literal1”方法在DVM上产生了一个问题,只有当javascript中任何对象文字的内部属性超过10个时,才会生成这个问题。如果Object Literal具有10个或少于10个属性,则上述方法不会在类文件中生成,并且可以正常工作

请注意,具有“\u c\u script\u 0\u literal1”方法的同一类文件在JVM上运行良好,但只会在DVM上产生问题

为了便于参考,请参考以下两个JAR,它们编译了Mozilla Rhino生成的javascript类文件:

  • :包含以下javascript的类文件

    变量代码={ 一:一,, 二:二,, 三:三,, 四:四,, 五:五,, 六:六,, 七:七,, 八:八,, 九:九,, 十点十分,, 十一点十一分 };

  • :包含以下javascript的类文件

    变量代码={ 一:一,, 二:二,, 三:三,, 四:四,, 五:五,, 六:六,, 七:七,, 八:八,, 九:九,, 十点十分 };


  • StackOverflow用于编程问题。你的问题是什么?您已经为此()提交了一个问题。问题是为什么DVM在运行这个从javascript文件生成的类文件时会给出这样的错误,而它在JVM上运行良好。