Java 使jar在32位jre中运行

Java 使jar在32位jre中运行,java,eclipse,jvm,Java,Eclipse,Jvm,我如何指定为了运行我创建的某个java应用程序,您需要在系统上安装32位JRE?此外,如果安装了32位JRE而不是64位JRE,我如何指定java应用程序使用它们 背景: 我创建了一个使用第三方32位只读库的应用程序。应用程序无法在64位JRE中运行 我将把这个应用程序分发到我公司的许多计算机上,因此我需要能够在代码中或在导出过程中指定所需的JRE 我正在使用eclipse、Kepler来开发和构建java应用程序。您不能直接在java中完成,因为此时您正处于运行的JVM中。我的解决方案是编写一

我如何指定为了运行我创建的某个java应用程序,您需要在系统上安装32位JRE?此外,如果安装了32位JRE而不是64位JRE,我如何指定java应用程序使用它们

背景:

我创建了一个使用第三方32位只读库的应用程序。应用程序无法在64位JRE中运行

我将把这个应用程序分发到我公司的许多计算机上,因此我需要能够在代码中或在导出过程中指定所需的JRE


我正在使用eclipse、Kepler来开发和构建java应用程序。

您不能直接在java中完成,因为此时您正处于运行的JVM中。我的解决方案是编写一个dos批处理脚本来设置JAVA_HOME,并在路径前面添加
%JAVA_HOME%\bin
。例如,我有
sethome.bat
,其中包含

@echo off
set "JAVA_HOME=c:\Program Files (x86)\Java\jre6"
set "PATH=%JAVA_HOME%\bin;%PATH%"
然后我用

call "%SERVICE_HOME%\sethome"
"%JAVA_HOME%\bin\java" -version
echo If this does not look correct press CTRL-C to cancel otherwise
pause

java的思想总是编译一次,然后在任何地方运行,而不管操作系统、cpu体系结构等,因此您可能在这里走错了方向

但是,这里有一些系统属性,您可能会/不会觉得有用。我已经列出了我在检查时拥有的属性键和值(我在Win7 64上运行Oracle JDK)

  • java.vm.name:java热点(TM)64位服务器vm
  • sun.arch.data.model:64
  • sun.cpu.isalist:amd64
要使用其中任何一个,请执行以下操作

String vmname = System.getProperty("java.vm.name");

您通常无法确定运行jar的程序是什么。我可以将jar传递到
acroread
,或
zip
或其他任何地方,而您对此无能为力


因此,我将尝试加载库,并进行适当的错误/异常处理。谁知道呢?也许你的客户同时用64位版本替换了这个库,而你却不知道?因此,这是:加载,如果它不会以优雅的eror消息中止,那么这是唯一明智的选择。

如果可能,请获取库的源代码并为64位计算机生成。:)就Java字节码而言,如果JRE是32位、64位或其他类型,这没有什么区别,但Reid在他的问题中提到,他使用的是32位本机库,所以他的程序只能在32位JVM上运行;64位JVM无法加载32位本机库。