繁体   English   中英

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

[英]How to launch a 32-bit java process from a 64-bit java process without hardcoding paths

我有一个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系统属性java.home ,但这仅指向一个安装,并且永远无法保证也存在32位JRE。

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

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

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

相关主题:是否可以通过参数“ -d32”强制64位JVM使用32位模式? (这是不可能的)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM