2011-07-25 57 views

回答

7

由32位JDK生成的字节代码与由64位JDK生成的字节代码相同。如果您的问题只发生在64位JVM上,是因为JVM中存在一个错误,并且使用64位JDK不会产生任何影响。

2

这取决于您的应用程序,但在正常情况下,在x64机器上从x86机器运行代码并不会出现问题,反之亦然。

如果您使用普通的旧Java(没有互操作,没有调用本地库),生成的字节码将是机器无关的,并且应该在任何已安装的JVM上运行。

+0

我们有几个(少于5个)对本地库的调用。如果生成的字节码不同,是否存在已知问题?只要它仍然运行,我不介意生成的字节码是否有所不同。这是否意味着我必须再次生成库? – Paul

+0

如果您有对本机库的调用,那么您将不得不为目标环境再次编译这些库。 Java生成的字节码将是相同的。 – Falanwe

+2

@Paul,你需要为每个不兼容的平台编译你的库。 –

0

没有我能想到的,除非你明确地调用特定于环境的32位本地代码。

像Windows这样的操作系统使用WoW64允许32位应用程序在64位系统下运行。这是一项允许向后兼容的规定。只要本地库只依赖于32位或仅在64位库上,一切都很好。 JVM负责使用JIT将字节码转换为适当的机器码,所以不用担心。

3

Java背后的思想是程序的字节码版本对于所有平台都是相同的。这就是为什么您可以在Windows机器上编译并在Linux机器上运行生成的类和jar文件的原因。我每天都在做这样的交叉编译。

这包括JVM使用32位还是64位。

所以,简单的答案是没有,没有问题

(更先进的回答是,如果你也使用您带来您的Java代码,非Java本机代码,如DLL那么这段代码很可能需要重新编译)

相关问题