web-dev-qa-db-ja.com

javacコンパイラcom.Sun.tools.javac.Mainがクラスパスエラーにない

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

Javacコンパイラが見つかりません。 com.Sun.tools.javac.Mainがクラスパス上にありません。おそらくJava_HOMEがJDKを指していない

私は多くのSO質問を通過しましたが、解決策は次のとおりですJava_HOMEはJREではなくJDKを指す必要があります

次に、コマンドプロンプトでJava_HOMEを印刷しようとしましたが、

enter image description here

私はこのJava_HOMEを私のコンピュータから設定しました->プロパティ->環境変数->システム変数以下のように、

enter image description here

私はまた、設定を使用してEclipseに新しい変数を追加しました、

enter image description here

そして最後に、私はまだ同じエラーが発生します。 Java_HOMEの何が問題になっていますか?

更新:

Eclipse-preferences-installed jres存在するエントリは1つだけで、これはjdkで選択されています。

enter image description here

そしてproject propertiesJava build path-librariesありますJRE System Liberary [jdk1.8.0_31] 使用されている。

enter image description here

アップデート1:

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

9

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

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

リストにJDKがあることを確認してから、プロジェクトに移動します。プロジェクトでは、Java Build Path-> Librariesで使用するJava VMを選択します。

[編集]最後のスクリーンショットをよく見てください:C:\Program Files\Java\jdk1.8.0_31\jreを使用するようにEclipseを設定しました。これは、JDK内のJREにポイントしたことを意味します。代わりにC:\Program Files\Java\jdk1.8.0_31を使用してください(末尾の\jreなし)。

[[編集2]jreフォルダを削除すると、Javaは機能しなくなります。すべてのJDKにはJREも含まれています。JREにはrt.jar with String.classなど。Javaコンパイラは、JDKのtools.jarにあります。

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

変数(「変数の追加...」)を使用して、新規または異なるJREに切り替えるときにEclipseがパスを更新するようにできます。拡張子Java_HOMEを付けてlib/tools.jarを試してください

10
Aaron Digulla
  1. Eclipseで、「実行」->「外部ツール」->「外部ツール構成」をクリックします。
  2. 「JRE」タブをクリックします
  3. [インストールされているJRE ...]ボタンをクリックします
  4. [追加]ボタンをクリックします(該当する場合は[標準VM]を選択します)
  5. [ディレクトリ]ボタンをクリックします
  6. インストール済みのJDKバージョン(JREではない)を参照しますJava(例:C:\ Program Files\Java\jdk1.7.0_04)
  7. 完了をクリックします。
  8. Antスクリプトを再実行します-楽しんでください!
3