11
votes

Vers la "vraie" définition de Java_Home

En tant que développeur Java qui passe entre * Nix Systems (OS X, Ubuntu, ...), bien que je puisse toujours "obtenir" mon JDK et courir, il semble qu'il n'y ait pas de définition claire de Java_Home dans de nombreux packages qui nécessite Java_Home pour être défini:

par exemple

  • Maven: "Java_Home, fait référence à votre annuaire JDK"
  • Hadoop: "Java_Home, qui spécifie la voie à l'installation Java 1.5.x"
  • Sun: "Java_Home est le répertoire contenant le JRE"

    J'ai donc 2 questions concernant cette question (toutes les idées seraient les bienvenues, mais concrètement, j'ai ces deux questions):

    1) L'installation de Mac OS X Java copie-t-elle la cible à partir du répertoire "Javavavm.Frameworks" en USR / Bin?

    2) Quelle est la "définition" de java_home? Clairement, nous ne pouvons pas définir Java_Home comme simplement "l'endroit où Java est installé", car cette définition est ambiguë, car Java peut exister à la fois dans une localisation (c.-à-d. Dans / Système / System / Bibliothèque / .....), ou En variante, il peut également être directement dans le répertoire / usr / bin?

    mes pensées

    Je crois que Java_Home est en fait destiné à se référer à plus qu'un programme binaire "Java". Java_Home est probablement censé se référer à la localisation d'un ensemble de répertoires associés à Java et de binaires ... mais toujours, je ne suis toujours pas clair ce que cela comprend, et si la définition ou non cette définition que je propose est suffisamment précise pour être utile.


3 commentaires

C'est exactement ce que tous les trois exemples disent parce que tous les trois exemples spécifient la même chose exacte . C'est le répertoire de niveau supérieur de la JDK (qui inclut le JRE), ou si vous n'avez pas installé cela, le répertoire de niveau supérieur de l'installation JRE.


es-tu sûr ? Je ne crois pas que le JDK = Jre. Par exemple, envisagez une installation de Java qui n'inclut pas le JDK (seulement le JRE) .....


Les structures de répertoire du JDK et JRE sont les mêmes pour faciliter cela. C'est pourquoi ça marche.


5 Réponses :


1
votes

Je ne sais pas sur ce qu'il est réglé sur des systèmes différents, mais java_home doit être réglé sur la racine de l'installation Java. Donc, si vous l'avez installé sur

C: \ Program Files \ java \ jdk1.6.0_25 \

java_home devrait être réglé sur ça.

similaire à jdk_home si vous voyez cela par écrit.


0 commentaires

0
votes

Java_Home doit pointer sur le répertoire d'installation de l'installation Java que vous souhaitez utiliser.


2 commentaires

Donc, si j'ai Java in / usr / bin / alors que Java a également installé Java dans / System / Frameworks / .... est Java_Home = / USR /? Ou devrait-il indiquer le cadre VM.?


Ni. Vous le signalez au répertoire d'installation JDK ou JRE. Ce n'est vraiment pas compliqué. / usr / bin / java est un lien symbolique vers le binaire Java situé dans $ java_home / bin



2
votes

Je le définirais comme le chemin tel que tel: xxx

où l'exécutable qui exécutera vos programmes est.

la racine source pour rechercher tout votre Fichiers JRE SDK et JARS .


0 commentaires

14
votes

Il n'y a pas "true" définition de JAVA_HOME code>. Cette variable est non utilisée par le Java Runtime Environment, et n'a aucune spécification dans le cadre de la plate-forme Java.

Il est simplement une convention qui est utilisée par certaines applications qui fonctionnent au-dessus de la plate-forme Java. Comme il n'y a pas de norme, chaque application est libre de faire ses propres règles sur le répertoire dans lequel cette variable doit se référer; vous devriez lire la documentation de l'application pour savoir ce dont il a besoin. p>

Cela dit, toutes les applications que j'ai trouvé que les utilisations de cette variable ne fonctionnera que si vous réglez-le sur le répertoire de niveau supérieur d'une installation JDK (non JRE dans le JDK, mais le JDK lui-même). Ce répertoire doit contenir « bin » et les sous-répertoires « lib » qui contiennent le java code> exécutables et les bibliothèques d'exécution, respectivement. P>

Certaines applications aussi si vous diriger vers un JRE , mais si elle a besoin d'outils de développement comme javac code>, il échouera. p>

en général, je précise JAVA_HOME code> sur la ligne de commande lorsque je lance un outil de a besoin, parce que je travaille avec plusieurs versions de Java, comme ceci: p>

JAVA_HOME=/usr/local/jdk1.6.0_29 ant


1 commentaires

Plus-1 pour le Java_Home avant le programme (fourmi).



2
votes

La Convention du Soleil fait référence à la maison Java en tant que Root Dir Jre. Cela devrait être la définition la plus autorisée.

Pour Dev Outils comme Maven, ils se souciaient principalement de JDK Dir. Ils auraient dû l'appeler "jdk home". Malheureusement beaucoup, beaucoup appellent cela "Java Home" aussi, d'où la confusion.

Nous pouvons casser la confusion en n'utilisant pas "Java Home"; Au lieu de cela, dites "jre home" ou "jdk home" pour plus de clarté.


0 commentaires