64位Windows编译的JAR文件无法在32位系统上运行

4
我刚在我的64位Windows 7笔记本电脑上使用Eclipse开发并导出了一个可运行的JAR文件。我刚试着在其他计算机上运行它,当你双击它时,在另一台Windows 7 x64笔记本电脑上可以正常工作。然而,在我手头的一台32位笔记本电脑上,只有在使用命令行运行java -jar "C:\Name of Jar.jar"时才能启动,但是没有任何错误提示。
此外,如果我使用命令javaw "C:\Name Of Jar.jar",我会收到一个错误消息,说“找不到主类C:\Name of Jar.jar。程序将退出。”
有人知道为什么吗?如何解决?提前感谢您的帮助。

Java无论是32位还是64位都可以运行。尝试使用java -jar thejar.jar package.MainClass命令。 - Peter Lawrey
@PeterLawrey 哦,好的,我没意识到。那么提供两个不同的JVM有什么意义呢?不管怎样,我并不是在寻找命令行解决方案——我需要能够双击JAR文件。无论如何,还是谢谢您! - Andy
64位版本使用更多的寄存器,并且可以使用更多的内存。32位版本在32位操作系统上是必需的。 - Peter Lawrey
@PeterLawrey 好的,谢谢。但是使用64位JDK编译的JAR包能否在32位JVM上运行? - Andy
无论您使用32位还是64位,它都会创建相同的JAR文件,可以在32位或64位上运行。 - Peter Lawrey
3个回答

2

你是用JDK 1.7构建的吗? 也许你在尝试运行它的电脑上没有安装JRE7。 这是一个我遇到过几次的奇怪的错误。


啊哈 - 我现在感觉有点傻。我没意识到我的32位笔记本电脑上没有安装JRE 7;我甚至没意识到我的笔记本电脑上也没有安装JRE 6。我已经在我的笔记本电脑上安装了JRE 6(32位),并重新导出了可执行的JAR文件,现在它在我所有的笔记本电脑上都可以完美地运行了。对我来说,它似乎也更快了一些。 - Andy
当我发现这个问题时,我的反应就是这样。这个bug是随着Oracle发布1.7而来的 ;) - Zhedar
啊,我曾认为即使应用程序是使用1.7编译的,只要它仅使用1.6可用的方法,它就应该可以在只有1.6的情况下运行。对于1.6和1.5等也是如此。我错了吗?还是这是1.7中的错误? - Andy
这确实是以前的工作方式。通常,这些新功能在其字节码中与旧版本兼容... 我不记得我是否在Oracle的错误报告中读到过这个问题,但我认为它应该是运行时的官方错误。(当然是1.7版本) - Zhedar

1

在您的32位机器上右键单击 -> 在JAR上选择“打开方式”。如果列出了JRE,则可以使用它打开,并将其设置为默认运行程序。

我认为这与32位或64位操作系统无关。


1
你说得对。我认为它在64位系统上编译/导出并没有影响。不幸的是,你的解决方案没有帮助到我 - 我的问题是因为我测试的32位系统没有安装JRE 7。现在我已经解决了所有问题,但还是谢谢你。 - Andy

0
尝试使用javaw -jar jar_name。我认为这可能会奏效。

是的,这样做让它能够正常执行而没有错误,但正如我之前所说,我并不是真的在寻找一个命令行解决方案 - 我需要修复我的可执行JAR文件。现在我已经解决了,但还是谢谢你。 - Andy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接