如何在没有硬编码路径的情况下从64位java进程启动32位java进程



我有一个64位的java应用程序,我想在32位模式下运行一个特定的jar应用程序。为了测试,我在一个一次性类中完成了这项工作:

public class Invoke32bit {
    public static void main(String[] args)
    {
        try {
            Runtime.getRuntime().exec(""C:\Program Files (x86)\Java\jre7\bin\java.exe" -jar C:\dev\test.jar");
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

它有效。。。但是如何避免对java路径进行硬编码呢?将使用此应用程序的机器将同时安装64位和32位JRE(此应用程序在内部使用,我们不必担心其他人使用它)

我想到的一种方法是提供一个配置文件,允许用户输入64位和32位java的路径,但如果有一种自动化的方法,那会更好。

您有java System属性java.home,但它只指向一个安装,并且永远不能保证也存在32位JRE。

您可以使用其他可用的系统属性来"爬网"其他32位JRE安装,但这当然不是傻瓜式的(如果有人决定将JRE安装在某个你不想找的奇怪地方怎么办?

或者,您可以将32位JRE与软件打包并调用它。明显的缺点是您的分布规模太大。

关于系统属性:http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

相关主题:可以通过参数"强制64位JVM使用32位模式-d32〃;?(不可能)

阅读有关配置实用程序的Oracle官方教程。

您可以使用"属性"、"命令行参数"和/或"环境变量"来提及一些方法。

最新更新