1. ホーム
  2. java

[解決済み] javac コンパイラが見つからない com.sun.tools.javac.Main is not on classpath エラー

2022-01-25 23:04:29

質問

Javaアプリケーションを実行しようとしているのですが、以下のエラーが発生します。

com.sun.tools.javac.Main がコンパイラに含まれていないため、javacコンパイラを見つけることができません。 クラスパス JAVA_HOME が JDK を指していないのかもしれません。

私は多くのSOの質問を経て、解決策を見つけました。 JAVA_HOME は JRE ではなく JDK を指す必要があります。 .

そこで、コマンドプロンプトでJAVA_HOMEを表示してみました。

このJAVA_HOMEは、私のパソコン->プロパティ->環境変数->システムバーから、以下のように設定したものです。

また、eclipseの環境設定を使って、新しい変数を次のように追加していました。

そして最後に、私はまだ同じエラーが出ています。JAVA_HOME に何か問題があるのでしょうか?

更新情報 :

eclipse-preferences-installed jres のみが存在し、そのうちの1つのエントリは jdk と選択されています。

そして、その下に project properties java build path - libraries ある JRE System Liberary [jdk1.8.0_31] が使用されます。

<イグ

アップデート1 :

C:\Program Files\Java\jdk1.8.0_31 という名前のフォルダがあります。 jre . それは jre フォルダがこの問題を引き起こしているのでしょうか?このフォルダを削除することはできますか?プロジェクトに jdk リベイラリのみを追加する方法はありますか?

解決方法は?

EclipseはIDEなので、(少なくとも)2つのJavaバージョンを持っています。実行するためにそれ自身を使用するもの ( JAVA_HOME ) と、アプリケーションを実行するために使用するJVMがあります。この2つは同じである必要はありません。

この問題を解決するには、Eclipseの環境設定を調べる必要があります。 Installed JREs このリストには、EclipseがプロジェクトのJavaコードを実行するために使用するJava VMのリストが表示されます。私の推測では、そこにはいくつかのエントリーがあり、デフォルトではJDKではなくJREになっているはずです。

リストにJDKがあることを確認してから、プロジェクトに移動してください。プロジェクトでは、どのJava VMを使用するか、以下の項目で選択できます。 Java Build Path -> Libraries .

[EDIT】をご覧ください。] 最後のスクリーンショットをよく見てください。あなたは、Eclipseが C:\Program Files\Java\jdk1.8.0_31\jre これは、JDKの中のJREを指していることを意味します。使用方法 C:\Program Files\Java\jdk1.8.0_31 代わりに \jre を末尾につける)。

[EDIT 2】です。] を削除すると jre フォルダーを削除すると、Java は動作しなくなります。どんなJDKにも、JREが含まれています。JREには rt.jarString.class などがあります。Javaコンパイラは tools.jar は、JDKの中にある。

EclipseでJREのエントリーを再作成してもうまくいかない場合は、クラスパスに手動で追加する必要があります。

変数 ("Add Variable...") を使用すると、新しい/異なる JRE に切り替えたときに Eclipse が確実にパスを更新するようにすることができます。試す JAVA_HOME という拡張子を持つ lib/tools.jar