Выполните другой Java на основе параметра командной строки

У меня есть несколько установок Java на моей машине и потребности использовать различные версии все время. Я нашел, что в настоящее время используемая JVM может быть изменена командами update-alternatives и update-java-alternatives, которые по существу изменяют ссылку в /etc/alternatives/java и т.д. указать на корректную установку JVM.

Действительно ли возможно выполнить различные версии Java путем определения параметра командной строки? Например, для выполнения знатока, например, следующими способами:

> 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 и домой правильна в примере.

Править: Решение проблемы

Исходная проблема была вызвана названным интерфейсом CommonDataSource измененный в jre's rt.jar, который вызвал несовместимость между другим JREs. Решение состояло в том, чтобы добавить Java 6 rt.jar к пути к классу:

JAVA_HOME=$JAVA6_HOME MAVEN_OPTS="-Xbootclasspath/a:$JAVA6_HOME/jre/lib/rt.jar" mvn clean install
4
задан 24 September 2013 в 10:11

1 ответ

Примеры, которые вы показываете, делают именно то, что вы ищете. Таким образом, хотя параметр командной строки не сработает, переменная окружения сработает. И вы можете указать «одноразовые» переменные среды в командной строке, предшествующие команде.

Большинство, если не все, программное обеспечение на основе Java будет учитывать переменную среды JAVA_HOME и запускать JVM, расположенную под этим каталогом. Maven, безусловно, делает: взгляните на less $(which mvn) и посмотрите, сколько усилий он вкладывает в то, чтобы сделать это правильно.

Обратите внимание, что - в конкретном случае Maven - если ваша цель состоит в том, чтобы скомпилировать исходники Java для более старой версии JVM, нет необходимости переключать JVM. Вместо этого укажите исходную и целевую версии Java в своем POM.

0
ответ дан 24 September 2013 в 10:11

Другие вопросы по тегам:

Похожие вопросы: