【问题标题】:how java behave when compile and run on different architecture [duplicate]java在不同架构上编译和运行时的行为方式[重复]
【发布时间】:2013-12-18 23:57:56
【问题描述】:

假设我有一个应用程序,它有一个 A.java 类,它只打印一些信息。

我的应用程序也可以在以下情况下工作:

[1] 如果我用jdk1.7.x86 编译A 并在64 bit windows 机器上用jre1.7.x64 运行它?

[2] 如果我用jdk1.7.x64 编译A 并在32 bit windows 机器上用jre1.7.x86 运行它?

[3] 如果我用jdk1.7.x86 编译A 并在64 bit windows 机器上用jre1.7.x86 运行它?

[4] 如果我用jdk1.7.x86 编译A 并在64 bit Linux 机器上用jre1.7.x64 运行它?

[5] 如果我用jdk1.7.x64 编译A 并用jre1.7.x8632 bit Linux 机器上运行它?

[6] 如果我用jdk1.7.x86 编译A 并在64 bit Linux 机器上用jre1.7.x86 运行它?

【问题讨论】:

  • @SotiriosDelimanolis 它不是重复的,请参阅第三点

标签: java x86 jvm 64-bit x86-64


【解决方案1】:

.class 可以在任何版本高于 .class 文件中的编译版本的 JVM 上运行。

例如:

如果java文件是jdk5编译的,所有大于1.5的JVMwitch版本都可以运行这个类。

但是如果像这样编译java文件:

javac -source 1.4 Your.java

结果类可以在1.4或更高版本的JVM上运行。

【讨论】:

    【解决方案2】:

    是的。哎。矽。伊根。大。哈。夜波。阿瓦努。 Ναι。韩。哈安吉。关注。呸。当然。不是问题。毫无疑问。没有问题。 Java 运行时环境的承诺是一次编写,随处运行

    Linux、Mac、Windows、VMS、Solaris 等

    【讨论】:

    • 这并没有清楚地回答问题
    • 是的,但只有在您为该架构安装了正确的 jre 后,您的陈述才是正确的……请参阅第三点……
    • 鉴于第三点,我的陈述在 Windows 7 和 8 上仍然适用。唯一的区别是可寻址的内存量。
    • @ElliottFrisch:准确性和原创性 +1
    猜你喜欢
    • 2018-12-01
    • 2014-07-30
    • 2021-04-07
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2017-08-26
    相关资源
    最近更新 更多