Android的Dalvik虚拟机的一个小BUG

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

原题

      int i=2;
      i=i++;
      int j=i++;
      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.

       i=i++;
      int j=i++;

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

 

2.

       i=i++;
      int j=++i;

 

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

 

3.

       i=i++;
      int j=++i + ++i;

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

 

根据

Conversion to Dalvik format failed with error 2

 

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

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

 

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

却给 Dalvik 判了出错!

 

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

 

 

 

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

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

还是写清楚 简单些的好!

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值