4

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

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

4

2 回答 2

3

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

在了解javac中的交叉编译选项时,进一步搜索它可以提供更多见解:

交叉编译选项

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

于 2013-10-01T16:10:03.620 回答
2

Java 字节码与平台无关。

于 2013-10-01T16:16:27.277 回答