Wie Programm bekommen alle Java-JVM installiert (Nicht standardmäßig) mit Java?
Weiß jemand, wie man ein Programm bekommen alle JVMs installiert (nicht die Voreinstellung) mit Java?
Gibt es zum Beispiel 2 JVMs installiert auf dem Computer eines Benutzers:
JDK 5
JDK 6
Muss ich wissen, alle-Versionen installiert haben, um die eine, die Sie auf verwenden (Standardeinstellung) und dann Aufruf javac-Programm zu kompilieren, einige-source-code über eine bestimmte JDK-version.
Ich habe auf der Suche für einige Infos im web, die ich gefunden habe:
- Wie Sie programmgesteuert eine Java-version (Nicht standardmäßig) ?
- Wie kann ich ein Programm bekomme den Pfad zum jdk /javac?
Aber ich konnte nicht finden was ich suchte.
- was für OS, da es OS-abhängig
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe mir vor kurzem befasste sich mit einem sehr ähnlichen situation. Der folgende code ist fast genau das, was Sie brauchen. Es sucht nach java-JREs und JDKs nicht nur JDKs, aber sollte Recht einfach zu Bearbeiten, um Ihre Bedürfnisse. Achtung: nur windows -
Müssen Sie auch die aktualisierte WinRegistry.java Lesen von Werten sowohl aus der 32-bit und 64-bit-Abschnitten der windows-Registrierung: https://stackoverflow.com/a/11854901/828681
Ich bin normalerweise nicht ein java-Programmierer, so mein code wahrscheinlich nicht Folgen java-Konventionen. Mich verklagen.
Hier ist ein Beispiel ausführen von meinem Win 7 64-bit Maschine:
Ich habe eine schnelle überprüfung der windows-Registrierung, und dieser Schlüssel scheint zu bieten die verschiedenen Java-version auf dem system installiert
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
Auf weitere google-Suche, es wurde bestätigt, dass dies der richtige Ort.
Lesen Sie diese Artikel für die details...
Schnell verfügbare Java-JVM auf eine workstation (Windows)
Java 2 Runtime-Umgebung für Microsoft Windows
Auf Windows-Plattformen können Sie shell aus, um abzufragen, ob eine installierte JRE vorhanden ist:
Befehls wird wieder mit "java version "1.6.0_xx"" wenn Sie es installiert haben. Wenn Sie es nicht haben, installiert, werden sagen: "Unable to locate JRE Sitzung Spezifikation 1.6"
Diese scheint nicht zu funktionieren auf Linux, wahrscheinlich, weil Linux hat keine standard-Weg zur Installation von Java.
Grundsätzlich gibt es keine Möglichkeit zum auflisten Aller JVM auch nicht aus Java-code. Unterschiedliche Plattformen, unterschiedliche JDK-Anbieter, gebündelt JDK, die in anderen Produkten von Datenbanken zu flight simulator und video-rendering-engine.
Die meisten von JDK sind einfacher link zu einem anderen, z.B. v. 1.2 zeigte auf v. 6 installiert . Die gemeinsame Sache ist, wie man eine version : java -version
Aber wir haben einige Punkte:
installiert ist ziemlich vage - auch wenn JREs und JDKs ausgeliefert werden, mit einem installer, in der Tat müssen wir nur kopieren Sie die Dateien des JRE oder JDK auf eine Maschine und kann verwenden es sofort.
Also im Allgemeinen müsste man finden alle
java
oderjava.exe
ausführbaren Dateien auf Ihrem lokalen Rechner und rufen Siejava -version
zu sehen1, wenn Sie diese ausführbare Datei namensjava
/java.exe
wirklich ist (Teil) eine JRE.Gerade gesehen, dass du fragte für die JVM und möchten nennen der compiler.. Wenn Sie suchen JDKs verwenden die obige Methode, aber finden alle
javac
/javac.exe
. Sie haben eine-version
option auch.1es gibt eine kein Risiko - kein Spaß das kommt mit dieser Methode - bitte haben Sie einen Blick auf Sean ' s Kommentar! Wenn Sie nicht Vertrauen können die Maschine (oder seine Benutzer), dann möchten Sie vielleicht zu prüfen, wenn die ausführbare Datei ist ein Skript/batch-oder ein Binär - auch wenn eine binäre können wischen Sie Ihre Festplatte, auch die original-javac ausführbare Datei kann ersetzt werden durch einige böse-tut-code...
java
mit Inhaltrm -rf /
irgendwo?In der Windows-Eingabeaufforderung, die Sie laufen könnten, die folgenden 2 Befehle (oder führen Sie zusammen als batch-Datei). Dies sieht in Windows " Programme Hinzufügen/Entfernen (registry-Einträge) und Bericht, welche Versionen von JAVA mit installieren/deinstallieren von links, zusammen mit dem Ordner-Pfad, und einige andere Dinge.
Ich bin nicht sicher, ob dies Ihre Frage beantwortet, aber Sie können Steuern, welche großen JRE-version ein applet oder WebStart-Anwendung ausgeführt, mit der Familie Versioning-Funktion. Dies ermöglicht Ihnen das angeben der großen Java-release, das ein applet läuft. Sie sollten in der Lage sein, um daraus die Lage des
javac
von dort.http://www.oracle.com/technetwork/java/javase/family-clsid-140615.html
deployJava.js
können auch verwendet werden, für das schreiben der Start-Taste für die Zeugen Jehovas von apps.Finden Sie die Java-Versionen installiert ist, ist ein besserer Ansatz als die Suche nach javac.exe ist, um die Registrierung zu überprüfen. Java erzeugt einen registry-Schlüssel
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment
mit einem stringCurrentVersion
gesetzt, um die Versionsnummer, z.B. 1.5 oder 1.6.Können Sie es verwenden, Informationen zu finden, die JVMs:
Sehen Sie mehr hier: http://java.sun.com/j2se/1.4.2/runtime_win32.html
Ich bin nicht vertraut mit dem Zugriff auf die registry von Java, aber Sie können immer ausführen regedit ein command line interface und analysieren Sie die Ergebnisse, das ist, was ich getan habe.
Verwenden Sie die JavaCompiler (in der neuesten JDK kann der Benutzer legen Ihre Hände auf) mit den entsprechenden Optionen für
-source
,-target
&-bootclasspath
. Die letzten beiden sind Teil des Die Cross-Kompilierung-Optionen vonjavac
.Als die Suche nach dem JDK, pop -
JFileChooser
mit dem Pfad des aktuellen JRE als Standard-Verzeichnis. Wenn der Benutzer nicht navigieren Sie von dort zu einem JDK, es ist zweifelhaft, dass Sie sollten code schreiben.Wie bereits gesagt,
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
sollte eine Liste der verfügbaren JVMs, ABER ich habe gerade herausgefunden, dass, während diese Registrierung ist derzeit nur mit einen 64-bit-Version 1.6.0_31-JVM auf meinem Rechner, ich habe auch eine 32-bit-java installiert unterC:\Windows\SysWOW64
.So sind die Informationen aufgeführt auf die registry nicht malen das ganze Bild, und wenn Sie möchten, führen Sie eine 32-bit-JVM 64-bit-Windows verwenden, sollten Sie auch versuchen
C:\Windows\SysWOW64
.