Java 64位平台上的32位JVM运行时编译器

Java 64位平台上的32位JVM运行时编译器,java,jvm,Java,Jvm,我们知道Java编译器生成的字节码是中间的,与平台无关 我正在运行一个64位的WindowsServer2008R2平台,我想告诉Java虚拟机将字节码编译成32位而不是64位(它的默认行为) 我这样做是为了解决与另一个32位应用程序的兼容性问题 请帮忙 附言:我最好知道如何通过JNI来完成 我们知道Java编译器生成的字节码是中间的,与平台无关 对 我正在运行一个64位的WindowsServer2008R2平台,我想告诉Java虚拟机将字节码编译成32位而不是64位(它的默认行为) 你刚才自

我们知道Java编译器生成的字节码是中间的,与平台无关

我正在运行一个64位的WindowsServer2008R2平台,我想告诉Java虚拟机将字节码编译成32位而不是64位(它的默认行为)

我这样做是为了解决与另一个32位应用程序的兼容性问题

请帮忙

附言:我最好知道如何通过JNI来完成

我们知道Java编译器生成的字节码是中间的,与平台无关

我正在运行一个64位的WindowsServer2008R2平台,我想告诉Java虚拟机将字节码编译成32位而不是64位(它的默认行为)

你刚才自相矛盾。您一开始就说,字节码是独立于平台的,这是正确的。现在您错误地说它是平台特定的,32位或64位。事实并非如此。它是平台独立的。你第一次是对的。没有“将字节码编译为32位”或“而不是64位(其默认行为)”之类的东西

最好是我知道如何通过JNI实现

编译不是通过JNI完成的。

好的,这里是交易

字节码是一种平台无关的说法,“Java代码被编译成可执行文件,就像我们在C/C++中所做的那样”。字节码是一种中间格式,由JVM解释以执行指令


现在32位或64位不是字节码,而是用于生成或运行该字节码的JVM、JRE或JDK。我不知道你是否知道,但实际上是JVM让我们产生了Java平台无关功能的错觉。您的类文件/JAR可以在任何地方运行,但您仍然需要一个依赖于平台或符合平台的JVM或JRE来运行您的类文件或JAR。

这个答案可能有用吗?您使用的是32位JRE吗?产生字节码的javac编译器每两周不知道furlong的32位和64位。它完全独立于机器字大小。当然,JITC依赖于机器,但是如果您运行32位JRE,您应该获得32位行为。