Trouver absolu java.exe chemin d'accès par programme à partir du code java
Si j'ai un jar java ou fichier de classe qui est lancé par l'utilisateur (en supposant que java chemin d'accès est défini dans les variables d'environnement), alors comment puis-je partir au sein du code, chemin d'accès absolu java.exe/javaw.exe à partir de laquelle ce fichier est en cours de lancement.
Comme sur ubuntu, nous pouvons lancer: % which java
et il montre le chemin.
Cependant sur windows, si je vérifie System.getenv()
il peut arriver qu'il y a plusieurs chemin d'accès trouvé l'e.g pour l'ancienne ou la nouvelle version. Si, par la ligne de cmd, je lance java -version
il ne montre pas le chemin.
Pouvez-vous me dire soit par pure java ou en ligne de commande sur windows comment est-il possible de trouver l'emplacement de javaw.exe?
j'ai besoin des deux. Emplacement de pot peut être trouvé facilement. J'ai besoin d'installer mon application en tant que service windows, et pour cela j'ai besoin de l'abs chemin d'accès par défaut javaw.exe en Fait, il est là, en Chemin, mais je suis confus car il peut afficher plusieurs entrées de l'ancienne et la nouvelle version, vous demandez-vous comment pourrais-je maintenant que l'on est celui par défaut?
OriginalL'auteur Johnydep | 2012-01-25
Vous devez vous connecter pour publier un commentaire.
E. G.
De sortie
Et oui, je suis convaincu que dans une JRE.
En fait pour le tester je dois désinstaller jdk, mais si vous pouviez confirmer ensuite, je vais avoir ma réponse, merci
Mais le JAVA_HOME n'est pas nécessairement la java.exe qui est utilisé pour lancer l'application en cours d'exécution. J'ai trois différents Jdk installé et une seule JAVA_HOME.
oui vous avez raison, mais Andrew réponse est ce que je cherchais. J'ai essayé le Système.la fonction getenv("JAVA_HOME"), alors que ce dont j'avais besoin était: Système.getProperty("java.accueil");
apparaît, vous pouvez de la même manière, dire si vous êtes en cours d'exécution java vs javaw dans ou pas, voir stackoverflow.com/questions/14632272/...
OriginalL'auteur Andrew Thompson
Sur Windows, java.de la bibliothèque.chemin d'accès du Système de la Propriété commence avec le chemin du répertoire bin contenant selon la java.exe a été utilisé pour exécuter votre fichier jar.
Cela a un sens, parce que sous Windows, la première place n'importe quel exécutable recherche des fichiers DLL qui est le répertoire contenant l'exécutable lui-même. Alors, naturellement, quand la machine fonctionne, en premier lieu, il semble pour les Dll est le répertoire contenant les java.exe.
Vous pouvez acquérir le chemin d'accès à java.exe comme suit:
Ce code est spécifique à Windows - j'ai codé en dur le chemin séparateur (;) et le séparateur de fichiers (). J'ai aussi mis un repli à juste "java" dans le cas où le chemin de la bibliothèque truc en quelque sorte ne fonctionne pas.
J'ai testé cela avec Java 6 et 7 sur Windows 7. J'ai essayé une version 32 bits et la version 64 bits de Java.
OriginalL'auteur Greg
Voici un peu plus généralisé solution que j'ai trouvé. Peut-être utile:
OriginalL'auteur Tim Angus