如果我的机器安装了多个版本的 jre,比如 jre 5、jre 6 和 jre 7。是否可以强制我的应用程序在运行时使用特定的 jre(比如 jre 5)?
7 回答
启动应用程序。使用Java Web 开始。它为运行时版本控制提供了许多选项。
所有勾选的 JRE 都可供 JWS 启动的应用程序使用。
以下是在启动文件中选择任何 1.5 变体的方法。
<j2se version="1.5" />
我的电脑上有 3 个 JDK。每个 JDK 都有自己的环境变量
%JAVA_HOME_1_5%
%JAVA_HOME_1_6%
%JAVA_HOME_1_7%
当我想使用特定的 JDK 时,我设置%JAVA_HOME%
了这个变量。
我还使用脚本来使用不同的 JDK。例如,如果我想使用JDK 6启动 Jboss ,我运行下一个脚本
set JAVA_HOME=%JAVA_HOME_1_6%;
%JBOSS_HOME%/run.bat
如果我想执行 runnable jar (使用JDK 5 ) 我运行下一个脚本
%JAVA_HOME_1_5%/bin java MyJar.jar
如果我想用JDK 7运行 maven ,我正在使用下一个脚本
set JAVA_HOME=%JAVA_HOME_1_7%
mvn clean install -Dmaven.test.skip=true
等等
因此,您可以使用任何使用 env 的 JDK。变量和简单脚本
在对应路径下运行java:
usr/local/jdk1.5/bin/java HelloWorld
usr/local/jdk1.6/bin/java HelloWorld
usr/local/jdk1.7/bin/java HelloWorld
ETC...
在您正在运行的应用程序中使用
String javaVersion = System.getProperty("java.specification.version");
检查正在使用哪个版本的 Java 来运行您的应用程序。如果它与您想要的不匹配,您可以抛出异常。
我找到了办法。我们可以允许应用程序通过LINKjavaw -version:"version String"
中给出的方式选择 jre
例如:javaw -version:"1.6.*"
您可以通过使用磁盘上到特定 Java 版本的绝对路径启动应用程序来强制应用程序。
您通常必须在启动 java 之前执行此操作。在脚本中,您可以查找特定版本的 java 的可执行文件,如果该 jre 不存在/不在已知位置,则会失败。然后在找到那个版本的 java 之后用那个 jre 运行你的 java 程序。如何显式执行此操作取决于您的操作系统。
一旦进入 java 程序 java 你不能改变版本。因此,Java 版本检查(在 Java 程序内部)仅用于在完全执行之前退出而不是更改为有效版本。