根据命令行参数运行不同的java

根据命令行参数运行不同的java

我的机器上安装了多个 Java,需要一直使用不同的版本。我发现可以通过命令update-alternatives和更改当前使用的 JVM update-java-alternatives,这实质上会更改等处的链接/etc/alternatives/java以指向正确的 JVM 安装。

是否可以通过指定命令行参数来运行不同版本的 Java?例如,以以下方式运行 Maven:

> JAVA_HOME=/usr/lib/jvm/java-7-oracle/ mvn clean install

> JAVA_HOME=/usr/lib/jvm/java-6-sun/ mvn clean install

编辑:以上命令有效

我们可以通过运行来验证上述命令是否有效

> JAVA_HOME=/usr/lib/jvm/java-6-sun mvn -version

Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.6.0_32, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-6-sun-1.6.0.32/jre

示例中的 java 版本和 home 是正确的。

编辑:问题的解决方案

原来的问题是由于CommonDataSourcejre中一个名为 的接口被改变了rt.jar,导致不同的jre之间不兼容,解决办法是将java 6添加rt.jar到classpath中:

JAVA_HOME=$JAVA6_HOME MAVEN_OPTS="-Xbootclasspath/a:$JAVA6_HOME/jre/lib/rt.jar" mvn clean install

答案1

您展示的示例正是您想要的。因此,尽管命令行参数无法解决问题,但环境变量可以。您可以在命令行上(命令之前)指定“一次性”环境变量。

大多数(如果不是全部)基于 Java 的软件都会遵守JAVA_HOME环境变量,并运行位于该目录下的 JVM。Maven 肯定会这样做:查看less $(which mvn)一下它为实现这一目标付出了多少努力。

请注意 - 在 Maven 的特定情况下 - 如果您的目标是为较旧的 JVM 版本编译 Java 源代码,则无需切换 JVM。相反,请在 POM 中指定源和目标 Java 版本。

相关内容