4

最新のJDK 7 Update 21をインストールし、次のワンライナーを書きました(Windows 7で):

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

出力は(驚くべきことに)次のとおりです。

java.home = D:\Java\jdk1.7.0_21\jre

一般的な原因をすべて修正したと思います。

  1. JAVA_HOME は「D:\Java\jdk1.7.0_21」に設定されています
  2. システム PATH 設定の最初のパスとして「D:\Java\jdk1.7.0_21\bin」を設定しました。
  3. Windows\System32 に java.exe がありません
  4. 「新鮮な」コマンドラインを使用しています
  5. このサイトや他のサイトを広範囲に検索しました
  6. レジストリに「HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment」キーが含まれていません。「HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.7」の値には、正しい「JavaHome」値が含まれています。
  7. java.exe 呼び出しに「-server」オプションを追加しても、出力は変わりません

ここにあなたの情報のためのいくつかの出力があります

D:\Temp>echo %PATH%
d:\Java\jdk1.7.0_21\bin

D:\Temp>echo %JAVA_HOME%
D:\Java\jdk1.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:\Java\jdk1.7.0_21\jre\lib\rt.jar]
[Loaded java.lang.Object from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
[Loaded java.io.Serializable from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
...
[Loaded java.lang.Void from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
java.home = d:\Java\jdk1.7.0_21\jre
[Loaded java.lang.Shutdown from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
[Loaded java.lang.Shutdown$Lock from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]

(更新:)基本的に、Javaアプリケーションを実行して、そのJARを他の場所にコピーせずにJavaコンパイラ(JDKのtools.jarにある)にアクセスできるようにする方法を知る必要があります。

ところで、これの背後にある主な問題は、java-compiler が見つからないため、jetty が JSP をコンパイルできないことです。「tools.jar」を JRE\lib\ext に追加できることはわかっていますが、それは長期的な解決策ではありません。

4

2 に答える 2

7

これはデフォルトであり、Java HotSpot インタープリターの C++ コードで指定されています。また、これは、環境の Java ホームが JDK を指している場合に、Sun が最初にシステム プロパティに設定することを望んでいたものです。

システム プロパティのJava(TM) チュートリアルを参照してください。ここでは、java.home システム プロパティが「Java ランタイム環境 (JRE) のインストール ディレクトリ」として説明されています。また、クラス システム用の Oracle の Java 7 Javadocは、java.home システム プロパティを「Java インストール ディレクトリ」と記述している箇所で間違っています (驚くべきことです!)。

答えは、実際の JVM コードの 309 行にあります。

于 2013-07-24T23:37:19.403 に答える
0

出力として表示されるものはまったく問題ありません。これがデフォルトの Java 実行環境です。

JDK を使用するように jetty を構成するには、おそらくこれが役立ちます。

于 2013-06-12T09:26:10.223 に答える