Gradle не знаходить інструментів.jar


160

Я використовую javadoc doclets з gradle, тому мені потрібно використовувати пакет tools.jar, який знаходиться в папці lib від jdk (в моєму випадку 1.6.0_26).

Справа в тому, що gradle не сприймає це автоматично, тому я додавав цей пакет інструментів у свою папку libs, а потім додав його до залежностей.gradle.

Тепер я хочу взяти його безпосередньо зі свого дому JDK у свою залежність.gradle. Чи є спосіб це зробити? Я спробував наступне у своїх залежності.gradle:

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

Але він не знаходить його під час компіляції.


2
Варто зазначити, що, як попередній курсор для вирішення цього питання, і коли я натрапив на це, вам потрібно буде переконатися, що ви фактично встановили JDK: P І в деяких системах ви будете мати потрібно встановити пакет JDK devel, щоб отримати tools.jar
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

5
це означає, що тоді нам слід додавати %JAVA_HOME%/binі зміну, %JAVA_HOME%/libі Pathзмінну?
Ерік

3
Навіть незважаючи на те, що tools.jar насправді є \ lib, додаючи лише \ bin до шляху, як у розчині, який працював на мене, але не запитуйте, чому.
PHPirate

1
Зазвичай необхідний перезапуск / вихід, щоб зміни мали ефект.
reiner_zuphall

4
Мені довелося видалити запис PATH C: \ ProgramData \ Oracle \ Java \ javapath та замінити його на C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx, дефолт був у сестринському каталозі JRE
Іван

76

Знайшов це. Властивість системи "java.home" не є змінною середовища JAVA_HOME. JAVA_HOME вказує на JDK, тоді як java.home вказує на JRE. Дивіться цю сторінку для отримання додаткової інформації.

Так ... Моя проблема полягала в тому, що моєю початковою точкою була папка jre (C: \ jdk1.6.0_26 \ jre), а не папка jdk (C: \ jdk1.6.0_26), як я думав (tools.jar знаходиться на C : \ jdk1.6.0_26 \ lib папка). Рядок компіляції в залежності.gradle повинен бути:

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

28
Отже, як встановити java.home в ідеї з gradle?
Chinaxing

73

Я отримав таку ж помилку, коли Eclipse намагався виконати завдання Gradle. Кожен раз, коли я запускаю команду (тобто війну), процес викидає виняток, як:

Не вдалося знайти інструменти.jar. Перевірте, що C: \ Program Files \ Java \ Jre8 "є дійсною установкою JDK.

Я спробував рішення, вказане в цій публікації, але жодне з них не вирішило це питання. Ось моє рішення:

  1. Перейдіть до перегляду "Завдання Gradle"
  2. Клацніть правою кнопкою миші на завдання, яке потрібно виконати
  3. Виберіть Відкрити конфігурацію запуску Gradle
  4. На вкладці "Домашня сторінка Java" виберіть локальний сховище JDK і натисніть кнопку ОК

Біжи знову, насолоджуйся!


2
Я знайшов цю відповідь через години пошуку, і це нарешті спрацювало. Дуже дякую!
Alan47

5
Я не можу знайти Open Gradle Run та Java Home. Чи можете ви пояснити далі?

Як це було новим, як би один "Перейти до" Завдання Градле ""? Я не бачу нічого Gradle в меню Перегляд, ані щось таке, що позначається?
Дронз

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
Так, установка JDK замість JRE також вирішила проблему для мене.
peschü

20

Я також боровся за це рішення. Знайшли кращий шлях до Gradle, як описано тут . Інформацію про JVM / JDK ми можемо отримати від самого Gradle.

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

Так просто.


3
Це працює для мене, якщо я використовую compileзамістьruntime
Дорі

Мені подобається це рішення. Це приємно і портативно.
Адам Плумб

4
Це рішення не працює з Gradle 4.x. Я отримую NullPointerException.
Громовержець

1
Я можу уявити, що вона повертається до нуля, коли немає інструментів.jar, доступних із останніми JDK. Дивіться github.com/gradle/gradle/blob/master/subprojects/base-services/…
Мохаммед

17

У CentOS7 пакет розробки встановить tools.jar. Файл відсутній у java-1.8.0-openjdk

sudo yum install java-1.8.0-openjdk-devel


Дякую Річард! Це мені дуже допомогло! Я намагався запустити "натиснути на android" і отримати помилку: * Що пішло не так: Виконання не вдалося виконати завдання ": app: compileDebugJavaWithJavac". > Не вдалося знайти tools.jar. Перевірте, чи /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre містить дійсну установку JDK. Тепер це працює! Знову дякую!
Матей Гонтійо

Дякую Річард. Він працював і на мене. В основному це був шлях шляху JAVA_HOME, який намагався знайти tools.jar у потрібному шляху до jva jva.
rajdeepbs29

16

Додайте це до gradle.properties:

org.gradle.java.home = C: \ Файли програми \ Java \ jdk1.8.0_91


7
Не забудьте використати подвійні косої коси. Наприклад: org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
CoolMind

11

Можливо, на два роки пізно, але нещодавно я зіткнувся з тією ж проблемою, і це рішення, з яким я опинився після пошуку цієї посади :

import javax.tools.ToolProvider

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

Це має спрацювати, якщо java.home вказує на каталог, який не знаходиться в каталозі JDK, і навіть на Mac OS, де замість tools.jar у вас буде class.jar.


Неможливо викликати метод 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. З власною установкою jdk, яка є JAVA_HOME =C:\Program Files\Java\jdk1.8.0_162

це має бути прийнята відповідь для Windows :)
дякую

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)
Ерік Аронесті

Працював і для мене. Я створив gradle.properties в корені проекту, що міститьorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan

3

Linux

Відкрийте /etc/environmentбудь-який текстовий редактор, наприклад nano чи gedit, і додайте наступний рядок:

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

Windows

  1. Запустіть аплет панелі управління системою (Пуск - Налаштування - Панель управління - Система).
  2. Виберіть вкладку Додатково.
  3. Натисніть кнопку Змінні середовища.
  4. У розділі Системні змінні натисніть кнопку додати, а потім пройдіть наступні рядки:

    у назві змінної: JAVA_HOME

    у змінному значенні: C:\Program Files\Java\jdk1.x.x_xxx

    де x.x_xxxверсія jdk, ви можете отримати свою jdk версію звідсиC:\Program Files\Java

  5. У розділі Системні змінні виберіть Шлях, потім натисніть Редагувати, потім натисніть нову кнопку, а потім пройдіть наступний рядок:

    %JAVA_HOME%/bin;


Шляхи можуть незначно відрізнятися. У Fedora це працювало для мене зJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf

3

Це працювало для мене:

Я отримував повідомлення

Не вдалося виконати завдання ": app: compileDebugJavaWithJavac".

Не вдалося знайти інструменти.jar. Перевірте, чи містить C: \ Program Files \ Java \ jre1.8.0_121 дійсна установка JDK.

  • В Android Studio перевірте своє SDK-місцезнаходження.
  • Файл, структура проекту, розташування SDK, місце розташування JDK.
  • Приклад: C: \ android-studio \ android-studio \ jre
  • Скопіюйте файл tools.jar у папку C: \ android-studio \ android-studio \ jre \ lib у папку C: \ Program Files \ Java \ jre1.8.0_121 \ lib.
  • Повторіть спробу.

3

Якщо ви використовуєте термінал для побудови, і у вас є ця помилка, ви можете вказати на jdk у комплекті з Android Studio у вашому gradle.propertiesфайлі:

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

2

Як і інші відповіді , які я встановити org.gradle.java.home властивість в gradle.properties файлі. Але шлях з \ роздільниками не працював (будівництво на windows 10):

Домашня програма Java, надана через 'org.gradle.java.home', недійсна. Недійсний каталог: C: Program FilesJavajdk1.8.0_65

Тож замість

org.gradle.java.home = C: \ програмні файли \ Java \ jdk1.8.0_65

мені довелося користуватися

org.gradle.java.home = C: / Файли програми / Java / jdk1.8.0_65

тоді збірка була успішною

Проблема полягає в тому, що проект будується з JRE замість JDK, і оскільки я будував його від затемнення, це також працювало:

  • У вікні> Налаштування> Gradle> Аргументи задайте JRE робочої області та вкажіть свій JDK.
  • У вікні> Налаштування> Java> InstalledJRE вкажіть JDK за замовчуванням


2

Я вирішив проблему таким чином:

  • завантажити файлові інструменти-1.8.0.jar на http://www.java2s.com/Code/Jar/t/Downloadtools180jar.htm
  • распакуйте файл і перейменуйте на tools.jar
  • скопіюйте у папку C: \ Program Files \ Java \ jre1.8.0_191 \ lib
  • Повторіть спробу

Довелося скопіювати його C:\Program Files (x86)\Java\jre1.8.0_211таC:\Program Files (x86)\Java\jre1.8.0_251
TessavWalstijn

1

Ви переконалися, що tools.jar зробив це на шляху компіляції класу? Можливо, шлях невірний.

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

Так, це зробило шлях до класу, але все-таки отримала проблему.
Абхішек Гупта

1

Додавання шляху JDK через вкладку JAVA_HOME у "Відкритій конфігурації запуску Gradle" вирішить проблему.


0

Я спробував більшість найпопулярніших варіантів, але, здається, у мене щось не так з моїм налаштуванням середовища, тому вони не допомогли. Що вирішити це питання для мене був повторно встановити jdk1.8.0_201 і jre1.8.0_201і це вирішується помилка для мене. Сподіваюся, що хтось допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.