JDK 7 se présente comme un JRE (via "java.accueil " propriété du système)

je viens d'installer la dernière mise à jour de JDK 7 21 et j'ai écrit la doublure suivante(sur Windows 7):

public static void main(String[] args) {
    System.out.println("java.home = " + System.getProperty("java.home"));
}

la sortie est (étonnamment):

java.home = D:Javajdk1.7.0_21jre

je crois que j'ai résolu toutes les causes communes:

  1. JAVA_HOME est réglé sur "D:Javajdk1.7.0_21 "
  2. I have set "D:Javajdk1.7.0_21bin" comme premier chemin dans le réglage du chemin du système.
  3. il n'y a pas Java.exe in WindowsSystem32
  4. j'utilise une ligne de commande" fresh
  5. j'ai beaucoup cherché sur ce site et d'autres
  6. mon registre ne contient pas de clé" HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Runtime Environment". La valeur "HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Development Kit1.7" contient la valeur correcte "JavaHome".
  7. ajout de l'option "- server " à l'option java.l'appel exe ne change pas la sortie

Voici d'autres résultats pour votre information

D:Temp>echo %PATH%
d:Javajdk1.7.0_21bin

D:Temp>echo %JAVA_HOME%
D:Javajdk1.7.0_21

D:Temp>type SystemInfo.java
public class SystemInfo {

        public static void main(String[] args) {
                System.out.println("java.home = " + System.getProperty("java.home"));
        }

}

D:Temp>java -verbose SystemInfo
[Opened d:Javajdk1.7.0_21jrelibrt.jar]
[Loaded java.lang.Object from d:Javajdk1.7.0_21jrelibrt.jar]
[Loaded java.io.Serializable from d:Javajdk1.7.0_21jrelibrt.jar]
...
[Loaded java.lang.Void from d:Javajdk1.7.0_21jrelibrt.jar]
java.home = d:Javajdk1.7.0_21jre
[Loaded java.lang.Shutdown from d:Javajdk1.7.0_21jrelibrt.jar]
[Loaded java.lang.Shutdown$Lock from d:Javajdk1.7.0_21jrelibrt.jar]

(Updated:) fondamentalement, j'ai besoin de savoir, comment exécuter mon application java afin qu'il ait accès au compilateur java (trouvé dans les outils du JDK.jar) sans copier ce bocal à un autre endroit.

BTW le problème principal derrière ceci est que mon jetty ne peut pas compiler un JSP puisque le compilateur java est manquant. Je sais que je pouvez ajouter des "outils.jar " à JRE libext mais ce n'est pas une solution à long terme.

3
demandé sur Tom 2013-06-12 12:57:58

2 réponses

c'est par défaut -- spécifié dans le code C++ de L'interpréteur Java HotSpot. De plus, C'est ce que Sun voulait à l'origine que la propriété du système soit définie lorsque la maison Java de L'environnement pointe vers un JDK.

voir les tutoriels Java(TM) pour les propriétés du système où il décrit le java.propriété du système d'accueil comme le " répertoire D'Installation pour L'environnement Java Runtime (JRE)."Notez aussi que Javadoc Java 7 D'Oracle pour la classe Système est faux (aghast!) où il décrit le java.propriété du système d'accueil comme le " répertoire D'installation Java."

la réponse se trouve sur ligne 309 du code JVM actuel !

6
répondu ingyhere 2015-02-17 07:54:19

c'est parfaitement bien ce que vous voyez comme sortie - c'est votre environnement D'exécution Java par défaut.

afin de configurer jetty pour utiliser votre JDK, peut-être ce aide.

0
répondu Alexander Rühl 2013-06-12 09:26:10