强制java应用程序使用特定的jre

时间:2017-08-24 08:22:42

标签: java

我创建了一个java应用程序,它在某些机器上工作,但在少数机器中工作。我不确定是不是因为jre。 如何找到应用程序使用jre的路径,以及如何强制该应用程序在特定位置使用jre。

提前致谢

4 个答案:

答案 0 :(得分:1)

要回答手头的问题,Java系统属性会保存您所寻求的值:

String jreLocation = System.getProperty("java.home");
String javaVersion = System.getProperty("java.version");

我添加了第二个,因为您的问题可能是由不同版本的Java引起的(如果错误是,例如,java.lang.UnsupportedClassVersionError)。

在强制执行特定JRE方面,不可能从正在运行的Java程序强制JVM版本(这需要在shell脚本或类似程序中)。您可以检查“java.home”的值并退出,如果它不是您想要的那个,但这是不明智的,因为这将因系统而异。如果“java.version”不在一组支持的值中,则稍微更好的选择是退出并显示错误消息。

然而,最好的方法是修复原始问题,使您的程序适用于您需要运行的所有系统。为此,我建议使用在其他系统上运行程序时出现的错误来启动一个新问题。

答案 1 :(得分:0)

您可以编写脚本文件来运行特定的JRE,但请注意,除非主要版本不同,否则问题很可能不是JRE的错误。

你不能强迫JRE在你的Java程序中运行,因为它太晚了。

答案 2 :(得分:0)

您可以通过检查java.home系统属性的值来找出正在使用的JRE的路径。例如:

System.out.printf( "java.home = %s\n", System.getProperty( "java.home" ) );

更改JRE尤其取决于您运行应用程序的方式:

  • 如果您通过命令行界面运行程序,则需要修改PATH环境变量以指向正确的java可执行文件。
  • 如果您是通过IDE运行程序,则可能需要定义JRE_HOME环境变量并重新启动IDE,或更改项目的运行配置。

要了解有关Java中其他有用属性的更多信息,请查看https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

答案 3 :(得分:0)

如果您的Java应用程序需要特定的JRE,我认为您最好的选择是将您的应用程序打包为包含JRE的“自包含”软件包。正如许多人已经指出的那样,一旦您的应用程序启动,JRE已经被选中,并且您唯一的选择是检查系统变量,并可能退出应用程序并显示一些错误消息。

您可以在Oracle的部署指南中详细了解创建自包含应用程序包的过程:Self-Contained Application Packaging