java-转换为Dalvik失败-某处未初始化的变量

java-转换为Dalvik失败-某处未初始化的变量,第1张

概述我正在尝试将我的Android应用程序与使用FreePascal编译的JAR链接.我收到以下构建错误:[2012-09-1416:08:38-MyApp]DxEXCEPTIONFROMSIMULATION:[2012-09-1416:08:38-MyApp]Dxlocal0009:invalid[2012-09-1416:08:38-Yarxi]Dx...atbytecodeoffset00015f2c

我正在尝试将我的Android应用程序与使用Free Pascal编译的JAR链接.我收到以下构建错误:

[2012-09-14 16:08:38 - MyApp] Dx EXCEPTION FROM SIMulATION:[2012-09-14 16:08:38 - MyApp] Dx local 0009: invalID[2012-09-14 16:08:38 - Yarxi] Dx ...at bytecode offset 00015f2clocals[0000]: Lcom/mypackage/$Core$$_fpc_nestedvars;locals[0001]: Ilocals[0002]: Ilocals[0003]: Ilocals[0004]: Ilocals[0005]: Ilocals[0006]: Ilocals[0007]: Ilocals[0008]: Ilocals[0009]: <invalID>locals[000a]: <invalID>(..more locals... much more)locals[06db]: <invalID>stack[0003]: Istack[0002]: Istack[0001]: [Istack[top0]: int{0x00000000 / 0}...while working on block 5f23...while working on method $MyMethod4$FPR1:(Lcom/mypackage/$Core$$_fpc_nestedvars;)V...while processing $MyMethod4$FPR1 (Lcom/mypackage/$Core$$_fpc_nestedvars;)V...while processing com/mypackage/Core.class[2012-09-14 16:08:40 - MyApp] Dx 1 error; aborting[2012-09-14 16:08:40 - MyApp] Conversion to Dalvik format Failed with error 1

错误似乎是在某些时候,代码尝试读取未初始化的本地0009.

现在,Pascal不再强制执行局部变量的初始化.有可能,初始化首先被省略了.我保留了Free Pascal为我生成的JVM程序集文件.那些与Jasmin一起组装到类文件中.该文件很大-我不在这里粘贴.

有人可以帮我追溯错误的根源吗?错误发生在字节码偏移量00015f2c处.有没有办法将其转换回装配文件行号?

解决方法:

解决.实际上,00015f2c(十进制为89900)是方法中的字节码偏移量.我做了以下.

首先,我直接调用Jasmin,传递生成的.j文件和-g选项(生成行号):

java -jar %JASM% -g Core.j

Free Pascal本身不会发出-g.这给了我另一个Core.class文件,其中包含行号,行号相对于FPC生成的.j文件.然后,我使用javap将类反汇编为另一个.j文件:

"%JDKROOT%\javap" -l -c Core.class >Core_Withlines.j

但是,这个新的.j文件包含每个单独命令的行号和偏移量.然后,我在令人反感的方法中搜索了偏移量89900(注意:偏移量,由javap生成,在65536处换行).然后,我查看了该方法的主体下面的lineNumbertable(偏移量和行号都包含在内),在源Core.j文件中找到了与此偏移量相对应的行号.回头看一下Core.j,有一条注释包含Pascal源代码的行号.

确实有一个函数调用传递了一个未初始化的变量-但作为var参数.

该问题是Pascal / JVM边界问题.该变量尚未初始化,但已由ref传递到要从后者返回的函数中.编译器应该以某种方式将其抽象出来,恕我直言,但FPC没有.

总结

以上是内存溢出为你收集整理的java-转换为Dalvik失败-某处未初始化的变量全部内容,希望文章能够帮你解决java-转换为Dalvik失败-某处未初始化的变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1075267.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存