Gradleがtools.jarを見つけられない


160

私はGradleでjavadocドックレットを使用しているので、jdkのlibフォルダー(私の場合は1.6.0_26)にあるtools.jarパッケージを使用する必要があります。

要点は、gradleが自動的に取得しないことです。そのため、そのツールパッケージをlibsフォルダーに追加し、それをdependency.gradleに追加していました。

次に、JDKのホームから直接それをdependency.gradleに取り込みます。それを行う方法はありますか?私は私のdependencies.gradleで次を試しました:

compile files("${System.properties['java.home']}/lib/tools.jar")

しかし、コンパイル中には見つかりません。


2
これを解決するための前駆体として、そして私がこれを取得したときに遭遇したときに、実際にJDKがインストールされていることを確認する必要があることに言及する価値があります:Pそして、一部のシステムでは、 tools.jarを取得するにはdevel JDKパッケージをインストールする必要があります
mrooney

回答:


140

CLIからコマンドを実行しようとしたときに、この問題が発生しました。

これは、JREフォルダーを表示するシステムの問題でした D:\Program Files\Java\jre8\bin。そこを見ると、がないTools.jarため、エラーになります。

JDK私の場合は、どこにあるかを見つける必要があります。ディレクトリD:\Program Files\Java\jdk1.8.0_11を見ると、が表示されlibますTools.jar

新しい環境変数を作成しましたJAVA_HOMEここに画像の説明を入力してください

そして、PATH変数を編集してJAVA_HOMEを含める必要があります。 %JAVA_HOME%/bin; ここに画像の説明を入力してください

コマンドプロンプトを再度開き、実行する必要があります。


15
tool.jarはフォルダー内にあり%JAVA_HOME%\lib;ませんbin
GMsoF 2016年

5
これは、変数と変数の両方%JAVA_HOME%/binを追加する必要があるという意味ですか?%JAVA_HOME%/libPath
Eric

3
tools.jarは確かに\ libにありますが、ソリューションのようにパスに\ binを追加するだけでうまくいきましたが、理由は尋ねません。
PHPirate 2017年

1
通常、変更を有効にするには、再起動/ログアウトが必要です。
reiner_zuphall 2017年

4
私はPATHエントリC:\ ProgramData \ Oracle \ Java \ javapathを削除してC:\ ProgramData \ Oracle \ Java \ jdk1.8.xxxに置き換える必要がありました。デフォルトでは姉妹JREディレクトリ
John

76

それを見つけた。システムプロパティ「java.home」はJAVA_HOME環境変数ではありません。JAVA_HOMEはJDKを指し、java.homeはJREを指します。詳細については、そのページを参照してください

Soo ...私の問題は、私の開始点がjreフォルダー(C:\ jdk1.6.0_26 \ jre)であり、jdkフォルダー(C:\ jdk1.6.0_26)ではなく、tools.jarがCにあることでした。 :\ jdk1.6.0_26 \ libフォルダ)。dependency.gradleのコンパイル行は次のようになります:

compile files("${System.properties['java.home']}/../lib/tools.jar")

28
だから、どのようにgradleでjava.homeをアイデアに設定するのですか?
2014年

73

Eclipseを使用してGradleタスクを実行しようとすると、同じエラーが発生しました。コマンド(つまりwar)を実行するたびに、プロセスは次のような例外をスローしました。

tools.jarが見つかりませんでした。C:\ Program Files \ Java \ Jre8 "が有効なJDKインストールであることを確認してください。

私はこの投稿に記載されている解決策を試しましたが、どれもこの問題を解決しませんでした。ここに私の解決策:

  1. 「Gradle Task」ビューに移動します
  2. 実行するタスクを右クリックします
  3. Open Gradle実行構成を選択
  4. 「Javaホーム」タブでローカルJDKリポジトリを選択し、「OK」をクリックします

もう一度走って、お楽しみください!


2
私は何時間もの検索の後にこの答えを見つけました、そしてこれはついにうまくいきました。どうもありがとうございます!
アラン47

5
Open Gradle RunとJava Homeが見つかりません。さらに説明できますか?

これが初めての場合、「「Gradle Task」ビューに移動」する方法を教えてください。[表示]メニューの下にGradleが表示されず、そのようなラベルが付けられたものもありませんか?
Dronz 2018年

48

gradle.properties次の内容のファイルを追加しました。

org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45

5
Linuxでは、~/.gradle/gradle.propertiesファイルを編集してを追加することもできますorg.gradle.java.home=/usr/lib/jvm/java。Fedora 24で
動作します。– samsong8610

36

Ubuntuを使用して同様のケースがありました。マシンにはJREのみがインストールされていました。そのため、以下のコマンドを実行してJDKをインストールしました。

sudo apt install openjdk-8-jdk


1
はい、JREの代わりにJDKをインストールしても問題は解決しました。
ペシュ

20

私もこの解決策に苦労していました。ここで説明するように、Gradleを使用してより良い方法を見つけました。Gradle自体からJVM / JDK情報を取得できます。

dependencies {
   runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar)
}

とても簡単。


3
compile代わりに使用すると、これが機能しますruntime
Dori

私はこのソリューションが好きです。それは素晴らしく、移植性があります。
Adam Plumb 2017年

4
このソリューションは、Gradle 4.xでは機能しません。私が取得しますNullPointerException
Thunderforge

1
最新のJDKでtools.jarが利用できない場合にnullを返すことは想像できます。github.com/gradle/gradle/blob/master/subprojects/base-services/…を
Mohammed

17

CentOS7では、開発パッケージはtools.jarをインストールします。ファイルはjava-1.8.0-openjdkに存在しません

sudo yum install java-1.8.0-openjdk-devel


リチャード、ありがとう!それは本当に私を助けました!「react-native run-android」の実行に苦労していて、次のエラーが発生しました:*何が問題でしたか:タスク ':app:compileDebugJavaWithJavac'の実行が失敗しました。> tools.jarが見つかりませんでした。/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jreに有効なJDKインストールが含まれていることを確認してください。今それは働いています!再度、感謝します!
Matheus Gontijo 2018年

リチャードに感謝します。基本的には、目的のjava jdkパスでtools.jarを見つけようとしたJAVA_HOMEパスの問題でした。
rajdeepbs29

16

これをに追加gradle.properties

org.gradle.java.home = C:\ Program Files \ Java \ jdk1.8.0_91


7
二重のバックスラッシュを使用することを忘れないでください。例:org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\
CoolMind 2018

11

それは2年では遅すぎるかもしれませんが、私は最近同じ問題に遭遇しました、そしてこれはこの投稿を見つけた後に私が結んだ解決策です:

import javax.tools.ToolProvider

dependencies {
  compile (
    files(((URLClassLoader) ToolProvider.getSystemToolClassLoader()).getURLs()),
    ...
  }
}

java.homeが、JDKディレクトリの下ではなく、tools.jarの代わりにclasses.jarがあるMac OSでもないディレクトリを指している場合は、機能するはずです。


nullオブジェクトに対してメソッドgetURLs()を呼び出せません
Ulterior

10

Centos 7を使用すると、JDKにしかtools.jarありませんが、JREにはないことがわかりました。Java 8 JRE(yum install java-1.8.0-openjdk)をインストールしましたが、JDK(yum install java-1.8.0-openjdk-devel)はインストールしていません。

後者をインストールすると問題が解決します。また、必ずを設定してくださいJAVA_HOME


9

Windows 10で同じ問題が発生し、この方法で問題を修正しました。

  1. アクセス Advance System Settings>Environment Variables>System Variables
  2. PATHを選択してデフォルトを上書きします C:\ProgramData\Oracle\Java\javapath
  3. JAVA_HOME =であるあなた自身のjdkインストールでC:\Program Files\Java\jdk1.8.0_162

これはWindowsで受け入れられる答えになるはずです:) --thanks
Saher Ahwal

6

私のシステム(Win 10、JRE 1.8.0、Android Studio 3.1.2、Gradle 4.1)tools.jarでは、JREディレクトリ(C:\Program Files\Java\jre1.8.0_171)にはありません。

でも見つけてC:\Program Files\Android\Android Studio\jre\lib設定してみたJAVA_HOME=C:\Program Files\Android\Android Studio\jre

それは(私にとって)うまくいきます!


同じ問題、私のために修正、Win 10 / Android Studio。また、上記のソリューションのいずれも実際には「Tools.jar」をダウンロードしていないようです... jreには付属していません)
Erik Aronesty

私も働いた。プロジェクトルートにgradle.propertiesを作成しましたorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan

3

Linux

nanogeditなどの/etc/environmentテキストエディターで開き、次の行を追加します。

JAVA_HOME="/usr/lib/jvm/open-jdk"

ウィンドウズ

  1. システムコントロールパネルアプレットを起動します([スタート]-[設定]-[コントロールパネル]-[システム])。
  2. 「詳細」タブを選択します。
  3. [環境変数]ボタンをクリックします。
  4. [システム環境変数]で[追加]ボタンをクリックし、次の行を過ぎてください:

    変数名: JAVA_HOME

    変数値: C:\Program Files\Java\jdk1.x.x_xxx

    ここでx.x_xxxjdkバージョンはjdkバージョンをここから取得できますC:\Program Files\Java

  5. [システム環境変数]で[パス]を選択し、[編集]をクリックしてから、[新規]ボタンをクリックして、次の行を通過します。

    %JAVA_HOME%/bin;


パスは少し異なる場合があります。Fedoraのでは、これはと私のために働いたJAVA_HOME="/usr/lib/jvm/java-openjdk"
RVF

3

これは私のために働きました:

メッセージを受け取っていた

タスク ':app:compileDebugJavaWithJavac'の実行に失敗しました。

tools.jarが見つかりませんでした。C:\ Program Files \ Java \ jre1.8.0_121に有効なJDKインストールが含まれていることを確認してください。

  • Android Studioで、SDKの場所を確認します。
  • ファイル、プロジェクト構造、SDKの場所、JDKの場所。
  • 例:C:\ android-studio \ android-studio \ jre
  • C:\ android-studio \ android-studio \ jre \ libフォルダーのtools.jarファイルをC:\ Program Files \ Java \ jre1.8.0_121 \ libフォルダーにコピーします。
  • リトライ。

3

ターミナルを使用してビルドし、このエラーが発生した場合は、gradle.propertiesファイル内のandroid studioにバンドルされているjdkを指すことができます。

org.gradle.java.home=/usr/local/android-studio/jre

2

他の回答と同様に、gradle.propertiesファイルでorg.gradle.java.homeプロパティを設定しました。しかし、\区切り文字を含むパスは機能しませんでした(Windows 10でビルド):

「org.gradle.java.home」を介して提供されたJavaホームは無効です。無効なディレクトリ:C:Program FilesJavajdk1.8.0_65

だから代わりに

org.gradle.java.home = C:\ Program Files \ Java \ jdk1.8.0_65

私は使用しなければなりませんでした

org.gradle.java.home = C:/ Program Files / Java / jdk1.8.0_65

その後、ビルドは成功しました

問題は、プロジェクトがJDKではなくJREでビルドされていることです。Eclipseからビルドしていたため、これも機能しました。

  • 「ウィンドウ」>「設定」>「グラドル」>「引数」で、ワークスペースJREを指定し、JDKを指定します。
  • 「ウィンドウ」>「設定」>「Java」>「InstalledJRE」で、デフォルトとしてJDKを指定します


2

私はこの方法で問題を解決しました:


C:\Program Files (x86)\Java\jre1.8.0_211and にコピーする必要がありましたC:\Program Files (x86)\Java\jre1.8.0_251
TessavWalstijn

1

tools.jarがコンパイルクラスパス上に作成したことを確認しましたか?パスが正しくない可能性があります。

task debug << {
    configurations.compile.each { println it }
}

はい、クラスパスに到達しましたが、まだ問題が発生しています。
Abhishek Gupta

1

「Open Gradle Run Configuration」の「JAVA_HOME」タブからJDKパスを追加すると、問題が解決します。


0

私はトップのオプションのほとんどを試しましたが、環境設定に何か問題があり、役に立たなかったようです。私にとって問題を解決したのは再インストールすることで jdk1.8.0_201ありjre1.8.0_201、これは私にとってエラーを解決しました。それが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.