2

Javaを使い始めたばかりです。最初の Java プログラムをコンパイルして実行するために、この質問への回答の指示に従っています。JDK 11 をインストールしたばかりで、パスを に設定しましたC:\Program Files\Java\jdk-11\bin。それを行った後、次のコマンドを使用してプログラムをコンパイルできました。

javac HelloWorld.java

(ファイル名はHelloWorld.java.)

この結果、 というファイルHelloWorld.classがディレクトリに表示されます。今、私はこのコマンドを使用してプログラムを実行しようとしました:

java HelloWorld

これはうまくいきません。次の出力が得られます。

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

私はこの質問を見てきました。これは、私が得ているエラーメッセージと相まって、私のプログラムを実行しているJavaが何であれ、私のコンパイラが大量生産しているよりも古いバージョンのファイルを対象としていることを示唆しています。

上記の質問に対する回答のアドバイスに従って、実行してみjavac -target 8 HelloWorld.javaました。ただし、これも機能しません。次の警告が表示されます。

warning: target release 8 conflicts with default source release 11

noHelloWorld.classが作成されます。

Java Runtime Environment 11 が必要な気がしますが、入手方法がわかりません。「get JRE 11」などのクエリを検索すると、「バージョン 8」を提供しているメインの Java ダウンロード ページに戻ります。

付録: 私が保持しているディレクトリは、違いがある場合HelloWorld.javaは と呼ばれます。java

4

3 に答える 3

3

お使いのコンピューターに Public JRE 8 がインストールされているようです。パブリック JRE のインストーラーは、レジストリーの変更など、Windows にそのjava.exeandjavaw.exeをコピーし、その他の変更を行います。C:\Windows\System32このディレクトリは、デフォルトで環境変数C:\Windows\System32のシステム部分に登録されています。PATHWindows では、環境変数のシステム定義とユーザー定義がありPATH、最終的な環境変数ではシステム部分が最初に表示されPATHます。ウィンドウでコマンドをPATH実行すると、最終的な結果を確認できます。したがって、最初のWindows を実行すると、実際に実行されるのはディレクトリ内のものであり、これは新しい Java のクラスを実行できない Public JRE 8 のものです。pathcmdjavajava.exeC:\Windows\System32java.exe

以前の JDK リリースとは異なり、JDK 11 にはパブリック JRE がないため、JDK 11 をインストールした後、パブリック JRE 8 はアップグレードされませんでした。すべてのパブリック JRE をアンインストールするだけで問題が解決します。以前の JDK をインストールしたままにしておくこともできます。邪魔になることはありません。

于 2018-09-30T19:38:47.733 に答える