Linux和Windows java编译器是否生成相同或不同的类文件?

时间:2013-10-01 16:09:20

标签: java linux windows compilation

我们在Linux和Windows上使用相同版本的1.6.0_25进行Java编译。

由于某种原因,生成的类文件不同。这是对的吗?

2 个答案:

答案 0 :(得分:2)

java编译器不具有确定性,如果在同一平台上编译多次或在不同平台上编译,则可能无法生成相同的.class。我试图弄清楚java编译器的内部结构,看看为什么它不是确定性的。

javac中了解交叉编译选项时,进一步搜索可以提供更多洞察力:

交叉编译选项

  

默认情况下,会根据引导程序和扩展程序编译类   javac附带的平台类。但是javac也是   支持交叉编译,其中类是针对a编译的   不同Java平台的引导程序和扩展类   实现。使用-bootclasspath和-extdirs非常重要   交叉编译时;请参阅下面的交叉编译示例。

答案 1 :(得分:2)

Java字节码与平台无关。