У меня есть несколько установок 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
Примеры, которые вы показываете, делают именно то, что вы ищете. Таким образом, хотя параметр командной строки не сработает, переменная окружения сработает. И вы можете указать «одноразовые» переменные среды в командной строке, предшествующие команде.
Большинство, если не все, программное обеспечение на основе Java будет учитывать переменную среды JAVA_HOME
и запускать JVM, расположенную под этим каталогом. Maven, безусловно, делает: взгляните на less $(which mvn)
и посмотрите, сколько усилий он вкладывает в то, чтобы сделать это правильно.
Обратите внимание, что - в конкретном случае Maven - если ваша цель состоит в том, чтобы скомпилировать исходники Java для более старой версии JVM, нет необходимости переключать JVM. Вместо этого укажите исходную и целевую версии Java в своем POM.