您现在的位置是:首页 > 文章详情

Android的Dalvik虚拟机的一个小BUG

日期:2017-11-11点击:444

今日看一练习题,想运行一下验证个结果

原题

 
  1. int i=2;  
  2.      i=i++;  
  3.      int j=i++;  
  4.      System.out.println(i+"===onTouchEvent==="+j); 

比较简单,一看就是 i=3,j=2;

但在 Android的Dalvik虚拟机 上就不行

ECLIPSE没有报错

可是 编译的时候提示

[2009-08-11 14:56:44 - android_Links] 
trouble writing output: shouldn't happen
[2009-08-11 14:56:44 - android_Links] Conversion to Dalvik format failed with error 2

这导致程序无法运行!

在 百度上搜索 Conversion to Dalvik format failed with error 出了好多结果

进去一看 就2,3种方法,

1.是clean...

2.是调整SDK,

(大家都是转贴的比较多,原创的比较少啊!)

经过多次调整,

clean...     无效,

查看SDK 模拟器 也都是1.5的,

(看来他们的错误和我的是不一样了!不过这些转贴,的也都只是原封不动的转了,估计也都没验证!)

搞来搞去,只好把我的程序逐步排查,

结果 果然是代码有问题,

因为上边的测试是我加到 我的游戏 连连看 里的

这个程序 以前运行都没问题

不过,看 那道题的代码也没问题,

结果 还真是 这几行代码有问题了!

经研究 发现

1.

 
  1. i=i++;  
  2. int j=i++;  

这2行同时出现 编译不通过,

2.

 
  1. i=i++;  
  2. int j=++i; 

这2行同时出现 编译可以通过,

3.

 
  1. i=i++;  
  2. int j=++i + ++i; 

这2行同时出现 编译不通过,

根据

Conversion to Dalvik format failed with error 2

这句话的提示意思,猜想是

编译成 Dalvik 虚拟机的 字节码文件格式出错了!

以前看资料知道 Dalvik 是自己的字节码格式,没想到 这种在JAVA上 常见的代码

却给 Dalvik 判了出错!

看来 Dalvik要走的路还很长啊!

其他 ++X, X++之类的我就不实验了!

反正 一般我们写程序的时候 不要用太多,复杂 的 ++连用 就OK啦!

还是写清楚 简单些的好!



本文转自 kome2000 51CTO博客,原文链接:http://blog.51cto.com/kome2000/578689

原文链接:https://yq.aliyun.com/articles/480980
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章