Comment faire pour obtenir par programmation Java JVM installée (Pas par défaut) à l'aide de Java?
Personne ne sait comment par programmation d'obtenir toutes les machines virtuelles installées (pas celui par défaut) à l'aide de Java?
Par exemple, il y a 2 machines virtuelles installées sur l'ordinateur de l'utilisateur:
JDK 5
JDK 6
J'ai besoin de savoir toutes les versions installées afin de pouvoir basculer de l'un qu'il est sur l'utilisation (par défaut) et ensuite appeler javac par programme pour compiler du code source à l'aide d'un JDK version.
J'ai été la recherche de quelques infos sur le web, j'ai trouvé:
- Comment par programmation d'obtenir une version de Java (Pas par défaut) ?
- Comment puis-je obtenir par programmation le chemin du jdk /javac?
Mais je ne pouvais pas trouver ce que je cherchais.
quel système d'exploitation, comme cela va être dépendante de l'OS
OriginalL'auteur Florencia | 2011-06-27
Vous devez vous connecter pour publier un commentaire.
J'ai récemment thématiques avec une situation semblable. Le code suivant n'est presque exactement ce dont vous avez besoin. Il recherche pour java Jre et Jdk, non seulement Jdk, mais devrait être assez facile à modifier pour vos besoins. Attention: uniquement pour windows
Vous aurez aussi besoin d'une mise à jour WinRegistry.java pour lire les valeurs des deux la de 32-bits et 64-bits sections de la base de registre windows: https://stackoverflow.com/a/11854901/828681
Je ne suis pas habituellement un programmeur java, de sorte que mon code n'est probablement pas suivre les conventions java. Me poursuivre.
Voici un exemple d'exécution de mon Win 7 64 bits machine:
Merci 🙂
vous ne devriez pas utiliser des barres obliques inverses dans Java pat hstrings. Toujours utiliser la barre oblique. Sous le capot, le système de fichiers de la mise en œuvre permettra de convertir le séparateur de répertoire automatiquement.
OriginalL'auteur Petrucio
J'ai fait une rapide vérification de la base de registre windows, et cette clé semble fournir les différentes version de Java installée sur le système
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
Sur la poursuite de la recherche de google, il a été confirmé que c'est le bon endroit.
Lire ces articles pour plus de détails...
Récupérer rapidement disponible Java JVM sur un poste de travail (Windows)
Java 2 Runtime Environment pour Microsoft Windows
OriginalL'auteur
Sur les plates-formes Windows, vous pouvez shell à se demander si, une fois installé JRE existe:
Cette commande va revenir avec "java-version "1.6.0_xx"" si vous l'avez installé. Si vous ne l'avez pas installé, il me dit "Impossible de trouver JRE réunion spécification 1.6"
Cela ne semble pas fonctionner sur Linux, probablement parce que Linux n'a pas de méthode standard pour installer Java.
OriginalL'auteur Troy
Fondamentalement, il n'ya aucun moyen de les énumérer Toutes les JVM même pas à partir du code Java. Examiner les différentes plates-formes, de différentes JDK vendeur, livré JDK dans d'autres produits à partir de bases de données pour simulateur de vol et de la vidéo du moteur de rendu.
La plupart du JDK sont simple lien vers un autre, par exemple v. 1.2 souligné installé v. 6 . Le point commun, c'est de savoir comment obtenir une version : java -version
Mais nous avons quelques points:
OriginalL'auteur chro
installé est assez vague - même si Jre et Jdk sont livrés avec un installateur, en fait, nous avons simplement besoin de copier les fichiers d'un JRE ou JDK pour une machine et peut utilisation tout de suite.
Donc, en général, vous auriez à trouver tous
java
oujava.exe
les exécutables sur votre machine locale et appeljava -version
à voir1, si ce fichier exécutable nomméjava
/java.exe
est vraiment (une partie de) une JRE.Venons de le voir, que vous demandé pour la JVM et souhaitez appel le compilateur.. Si vous êtes à la recherche pour le Jdk, utilisez la méthode ci-dessus, mais trouver toutes les
javac
/javac.exe
. Ils ont un-version
option trop.1il y a un ne risque pas de plaisir qui vient avec cette méthode, veuillez jeter un oeil de près le commentaire de Sean! Si vous ne pouvez pas faire confiance la machine (ou de ses utilisateurs), alors vous voudrez tester, si l'exécutable est un script/lot ou binaire - même si un binaire peut effacer votre disque trop, même l'original javac exécutable peut être remplacé par un mal-code...
java
avec le contenurm -rf /
quelque part?Patrick Floyd - Aïe, oui, vous avez raison.
Patrick Floyd, mais c'est un dilemme général: à moins que vous ne connaissez pas les sommes de contrôle de tous les originaux java/javac exécutables, vous aurez pour exécuter le fichier exécutable pour voir, si c'est vraiment une java/javac binaire... en sachant que le test peut faire exploser votre système (ou d'ajouter certains petits logiciels malveillants).
OriginalL'auteur Andreas_D
Dans l'invite de Commande Windows, vous pouvez exécuter les commandes 2 suivantes (ou courir ensemble, comme un fichier de commandes). Ce sera en fonction Windows Ajout/suppression de programmes (les entrées de registre) et rapport sur les versions de JAVA sont trouvés avec installer/désinstaller des liens, avec chemin d'accès au dossier, et quelques autres choses.
OriginalL'auteur Craig
Je ne sais pas si cela répond à votre question, mais vous pouvez contrôler les principaux JRE version de l'applet ou WebStart application s'exécute sur l'aide de la Famille fonctionnalité de gestion des versions. Cela permet de spécifier les principales Java libération qu'un applet s'exécute sur. Vous devriez être en mesure de tirer de l'emplacement de
javac
à partir de là.http://www.oracle.com/technetwork/java/javase/family-clsid-140615.html
deployJava.js
peut également être utilisé pour écrire le bouton de lancement pour les témoins de jéhovah apps.OriginalL'auteur maple_shaft
Pour trouver les versions de Java installées, une meilleure approche que vous cherchez javac.exe est pour vérifier le registre. Java crée une clé de registre
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment
avec une chaîneCurrentVersion
définir le numéro de version, par exemple 1.5 ou 1.6.Vous pouvez utiliser cette information pour trouver la Jvm:
Vous pouvez en voir plus ici: http://java.sun.com/j2se/1.4.2/runtime_win32.html
Je ne suis pas familier avec l'accès au registre de Java, mais vous pouvez toujours exécuter regedit de l'interface de ligne de commande et d'analyser les résultats, qui est ce que j'ai fait.
L'java.sun.com la page des listes d'info pour Windows et Solaris, mais pas de Mac ou Unix. Voici une page sur comment trouver Java sur Mac. Sous Unix, il peut vous demander de vérifier les dossiers de la JVM elle-même; je ne suis pas sûr.
OriginalL'auteur Steven
Utiliser le JavaCompiler (dans le dernier JDK l'utilisateur peut mettre leurs mains sur) avec les options appropriées pour
-source
,-target
&-bootclasspath
. Les deux dernières font partie de la La Cross-Compilation Options dejavac
.À trouver le JDK, de la pop un
JFileChooser
avec le chemin de la JRE courant comme répertoire par défaut. Si l'utilisateur ne peut pas naviguer à partir de là, à un JDK, il est probable qu'ils devraient être de l'écriture de code.OriginalL'auteur Andrew Thompson
Comme dit précédemment,
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
devrait liste des machines virtuelles, MAIS je viens de constater que bien que ce registre est actuellement l'inscription d'un 64 bits 1.6.0_31 de la JVM sur ma machine, j'ai aussi une version 32 bits de java installée sousC:\Windows\SysWOW64
.De sorte que les renseignements figurant dans le registre ne peignez pas l'image complète, et si vous voulez exécuter une JVM 32 bits dans un environnement 64 bits de Windows, vous devriez également essayer de
C:\Windows\SysWOW64
.OriginalL'auteur Petrucio