文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>在jdk1.6上编译碰到问题

在jdk1.6上编译碰到问题

时间:2010-06-17  来源:javavsnet

最近在编译我们的中间件产品的时候,碰到了一些问题 原来编译环境:jdk1.5,OS:linux为64位,windows为32位。现在转移到jdk1.6上 在jdk1.6上编译,OS:linux为64位,windows为32位。在编译某个模块的时候,会提示bad class file: xxx.class, unable to access file: corrupted zip file 提示损坏的xxx.class,位于jar包AA.jar中。用jar命令jar -tvf AA.jar | grep xxx,可以得到xxx.class,说明xxx.class在AA.jar中,没有损坏。 编写一个测试类,该类import了xxx.class,没有其他语句。单独编译该类,用-cp AA.jar指定用到的jar,编译通过。 上面两步测试,说明所谓损坏的xxx.class其实完好的存在于AA.jar中,那为什么编译模块总是失败呢? 分析编译的log,发现在发生错误之前,ant执行了一个jar命令,该命令update了AA.jar,接着是javac命令,编译时候用到了AA.jar中的类,看来是在执行javac的时候jar命令还没有完成对AA.jar的更新操作,导致了问题。跟踪这个分析,我在javac命令加入了-verbose参数,这样相当于降低了javac的执行速度,果然编译通过了。看来jdk1.6的编译速度太快,暴露了这个问题。这个问题揭示了一个并发的问题,就是在ant中顺序执行jar命令和javac命令,javac可能在jar命令没有完全结束前执行,要从根本解决这个问题,需要重构代码,不在刚update一个jar后马上引用它。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载