it-swarm.com.de

JVM über die Befehlszeile unter Windows einstellen

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

24
John

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.

45
Jon Skeet

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
2
McDowell

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.

0
Loshen Naicker

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.

0
will