2017-08-24 76 views
-1

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

在此先感谢

+1

JRE首先来,你的应用程序后来。您不能强制应用程序在特定的JRE内运行,如果它运行在“错误”版本上,只能“优雅”地中止应用程序。 –

回答

0

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

您不能强制JRE在Java程序中运行,因为它太晚了。

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

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”不在一组受支持的值内,稍好的选项是退出并显示错误消息。

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

0

如果您的Java应用程序需要特定的JRE,我认为您最好的办法是将您的应用程序打包为包含JRE的“自包含”包。正如很多人已经指出的那样,一旦你的应用程序启动了,JRE就已经被选中了,而且你唯一的选择就是检查系统变量,并且可能会退出应用程序并出现一些错误信息。

您可以在Oracle的部署指南:Self-Contained Application Packaging上阅读关于创建自包含应用程序包的更多信息。

相关问题