如何从没有硬编码路径的64位Java进程启动32位java进程

时间:2013-12-09 16:50:21

标签: 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的路径,但是如果有办法自动化这样做会更好。

2 个答案:

答案 0 :(得分:1)

你有java系统属性java.home,但这只指向一个安装,并且绝不保证还存在32位JRE。

您可以使用其他可用的系统属性来“抓取”其他32位JRE安装,但当然这不是万无一失的(如果有人决定在他们不寻找的某个奇怪的地方安装他们的JRE会怎么样?它?

或者,您可以使用软件打包32位JRE并调用它。明显的缺点是你的发行量很大。

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

相关主题:possible to force a 64-bit JVM to use 32-bit mode via the argument "-d32"?(这是不可能的)

答案 1 :(得分:0)

阅读关于Configuration Utilities的Oracle官方教程。

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