我们在Linux和Windows上使用相同版本的1.6.0_25进行Java编译。
由于某种原因,生成的类文件不同。这是对的吗?
答案 0 :(得分:2)
java编译器不具有确定性,如果在同一平台上编译多次或在不同平台上编译,则可能无法生成相同的.class。我试图弄清楚java编译器的内部结构,看看为什么它不是确定性的。
在javac中了解交叉编译选项时,进一步搜索可以提供更多洞察力:
交叉编译选项
默认情况下,会根据引导程序和扩展程序编译类 javac附带的平台类。但是javac也是 支持交叉编译,其中类是针对a编译的 不同Java平台的引导程序和扩展类 实现。使用-bootclasspath和-extdirs非常重要 交叉编译时;请参阅下面的交叉编译示例。
答案 1 :(得分:2)
Java字节码与平台无关。