java汇编二进制文件因源文件的顺序而异

时间:2012-03-27 18:33:30

标签: java class assembly compilation javac

我正在使用javac编译器,我发现它产生不同的结果二进制.class文件,具体取决于作为参数传递的源文件的顺序。事实上,这是用ANT或MAVEN编译的问题,因为他们以不同的方式对文件进行排序。

在2个编辑之间存在差异。我已经反汇编了代码,我发现javac(优化器?)正在从其中一个编译中删除已弃用的java jsr / ret汇编指令。

我想知道这种行为是否是“隐式”编译的结果: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/solaris/javac.html#searching

  • 任何人都可以解释这种行为吗?

  • 如何在ANT和MAVEN中生成“幂等”编译过程,其中传递给编译器的源文件的顺序无关紧要?

1 个答案:

答案 0 :(得分:0)

您可以获取源列表,然后按字母顺序对其进行排序,包括完整路径。这将使运行之间保持一致。