Ist es möglich, die JVM anzugeben, die beim Aufruf von "Java jar jar_name.jar" verwendet werden soll. Ich habe zwei JVM auf meinem Rechner installiert. Ich kann Java_HOME nicht ändern, da es Code beschädigen kann, der vollständig betriebsbereit ist.
Mit freundlichen Grüßen
Stephen
Ja, geben Sie einfach explizit den Pfad zu Java.exe an. Zum Beispiel:
c:\Users\Jon\Test>"c:\Program Files\Java\jdk1.6.0_03\bin\Java.exe" -version
Java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)
c:\Users\Jon\Test>"c:\Program Files\Java\jdk1.6.0_12\bin\Java.exe" -version
Java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)
Der einfachste Weg, dies für eine laufende Befehlshell zu tun, ist etwa wie folgt:
set PATH=c:\Program Files\Java\jdk1.6.0_03\bin;%PATH%
Beispiel: Eine vollständige Sitzung zeigt meine Standard-JVM, dann die Änderung des Pfads und dann die neue:
c:\Users\Jon\Test>Java -version
Java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)
c:\Users\Jon\Test>set PATH=c:\Program Files\Java\jdk1.6.0_03\bin;%PATH%
c:\Users\Jon\Test>Java -version
Java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)
Dies ändert jedoch keine Programme, die Java_HOME explizit verwenden.
Wenn Sie im Pfad ein falsches Verzeichnis erhalten (einschließlich eines Verzeichnisses, das nicht vorhanden ist), erhalten Sie keine Fehler. Es wird also einfach ignoriert.
Sie sollten dies über die Befehlszeilenargumente ausführen können, vorausgesetzt, es handelt sich um Sun VMs, die mit den üblichen Windows InstallShield-Mechanismen mit der JVM Finder-EXE-Datei in system32 installiert werden.
Geben Sie Java -help für die Optionen ein. Siehe insbesondere:
-version:<value>
require the specified version to run
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
Wenn Sie 2 Installationen der JVM haben. Platzieren Sie die Version nach vorne. Linux: export PATH =/usr/lib/jvm/Java-8-Oracle/bin: $ PATH
Dies beseitigt die Mehrdeutigkeit.
ja, ich muss oft 3 oder mehr JVMs installiert haben. Ich habe zum Beispiel festgestellt, dass sich die JRE manchmal etwas von der JDK-Version der JRE unterscheidet.
Meine Lösung zur Lösung von Windows für ein bisschen "Verpackung" sieht so aus:
@echo off
setlocal
@rem _________________________
@rem
@set Java_HOME=b:\lang\Java\jdk\v1.6\u45\x64\jre
@rem
@set Java_EXE=%Java_HOME%\bin\Java
@set VER=test
@set WRK=%~d0%~p0%VER%
@rem
@pushd %WRK%
cd
@echo.
@echo %Java_EXE% -jar %WRK%\openmrs-standalone.jar
%Java_EXE% -jar %WRK%\openmrs-standalone.jar
@rem
@rem _________________________
popd
endlocal
@exit /b
Ich denke es ist unkompliziert. Die Hauptsache ist, dass SetLocal und Endlocal Ihrer App eine "persönliche Umgebung" für alles bieten, auch wenn andere Programme ausgeführt werden müssen.