我们知道Java编译器生成的中间码和平台无关的字节码。
我正在运行64位Windows Server 2008 R2平台,我想告诉Java虚拟机将字节码编译为32位而不是64位(默认行为)。
我这样做是为了解决与另一个32位应用程序的兼容性问题。
请帮忙!
P.S:我最好知道如何通过JNI完成。
答案 0 :(得分:2)
我们知道Java编译器生成的中间码和平台无关的字节码。
正确。
我正在运行64位Windows Server 2008 R2平台,我想告诉Java虚拟机将字节码编译为32位而不是64位(默认行为)。
你刚才自相矛盾。您首先正确地说,字节码与平台无关。现在你错误地说它是特定于平台的,32位或64位。事实并非如此。它与平台无关。你是第一次是对的。没有“将字节码编译成32位”或“而不是64(默认行为)”这样的东西。
我最好知道如何通过JNI
完成
编译不是通过JNI完成的。
答案 1 :(得分:0)
好的就是这笔交易。
字节代码是一种平台中立的方式,说“Java代码被编译为可执行文件,就像我们在C / C ++中那样”。字节代码是一种中间格式,由JVM解释以执行指令。
现在32位或64位不是字节代码,而是用于生成该字节代码或运行它的JVM或JRE或JDK。我不知道你是否知道,但实际上它的JVM给了我们一种平台中立的Java功能的幻觉。它是你的类文件/ jar,可以在任何地方运行,但你仍然需要一个平台相关或符合JVM或JRE来运行你的类文件或jar。