Gradle не находит tools.jar

Я использую javadoc doclets с gradle, поэтому мне нужно использовать пакет tools.jar, который находится в папке lib из jdk (1.6.0_26 в моем случае).

Дело в том, что gradle не принимает его автоматически, поэтому я добавлял этот пакет инструментов в свою папку libs, а затем добавлял его в dependencies.gradle.

Теперь я хочу перенести его прямо из моего дома JDK в мои зависимости. Есть ли способ сделать это? Я пробовал следующее в моих зависимостях .gradle:

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

Но он не находит его при компиляции.

Ответ 1

Нашел. Системное свойство "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 is в папке C:\jdk1.6.0_26\lib). Строка компиляции в зависимостях .gradle должна быть:

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

Ответ 2

У меня была эта проблема, когда я пытался запускать команды через 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; введите описание изображения здесь

Откройте команду командной строки и выполните ее.

Ответ 3

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

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

Я попробовал решение, указанное в этом сообщении, но ни одна из них не решила эту проблему. Здесь мое решение:

  • Перейдите к представлению Gradle Task >
  • Щелкните правой кнопкой мыши по задаче, которую вы хотите выполнить
  • Выберите "Открыть" Gradle "Запустить конфигурацию"
  • На вкладке "Главная страница Java" выберите локальный репозиторий JDK, затем нажмите "ОК"

Запустите снова, наслаждайтесь!

Ответ 4

Я добавил файл gradle.properties со следующим содержимым:

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

Ответ 5

У меня был похожий случай с использованием Ubuntu. На машине была установлена только JRE. Итак, я только что выполнил команду ниже, чтобы установить JDK.

sudo apt install openjdk-8-jdk

Ответ 6

Я тоже боролся за это решение. Нашел лучший способ для этого с Gradle, как описано здесь. Мы можем получить информацию JVM/JDK от самого Gradle.

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

Так просто.

Ответ 7

Добавьте это в gradle.properties:

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

Ответ 8

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

sudo yum install java-1.8.0-openjdk-devel

Ответ 9

Это может быть уже два года, но я столкнулся с той же проблемой в последнее время, и это решение, с которым я столкнулся после того, как нашел этот пост:

import javax.tools.ToolProvider

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

Он должен работать, если java.home указывает на каталог, который не находится в каталоге JDK, и даже на Mac OS, где у вас будет класс .jar вместо tools.jar.

Ответ 10

На 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

Ответ 11

В моей системе (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1) в каталоге JRE нет tools.jar (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

Это подходит для меня)!

Ответ 12

Linux

Откройте /etc/environment в любом текстовом редакторе, например nano или gedit, и добавьте следующую строку:

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

Windows

  • Запустите апплет System Control Panel (Пуск - Настройки - Управление Панель - Система).
  • Перейдите на вкладку "Дополнительно".
  • Щелкните по окружению Переменная.
  • В разделе "Системные переменные" нажмите кнопку "Добавить", а затем следующие строки:

    в имени переменной: JAVA_HOME

    в переменном значении: C:\Program Files\Java\jdk1.x.x_xxx

    где x.x_xxx версия jdk вы можете получить здесь версию jdk C:\Program Files\Java

  • В разделе "Системные переменные" выберите "Путь", затем "Редактировать", затем нажмите кнопку "Создать", а затем следующую строку:

    %JAVA_HOME%/bin;

Ответ 13

С 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.

Ответ 14

Как и другие ответы, я устанавливаю свойство org.gradle.java.home в файле gradle.properties. Но путь с \separators не работал (на основе окон 10):

Дом Java, поставляемый через 'org.gradle.java.home', недействителен. Инвалид каталог: 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

то сборка была успешной

Проблема в том, что проект строится с JRE вместо JDK, и поскольку я создавал его из eclipse, это также сработало:

  • В окне > Настройки > Gradle > Аргументы определяют рабочую область JRE и укажите ваш JDK.
  • В окне > Предпочтения > Java > Установленные JRE укажу ваш JDK по умолчанию

Ответ 16

Это сработало для меня:

Я получаю сообщение

Не удалось выполнить задачу ': app: compileDebugJavaWithJavac'.

Не удалось найти tools.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.
  • Повторите попытку.

Ответ 17

Вы убедились, что tools.jar сделал это на пути к компиляции класса? Возможно, путь неправильный.

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

Ответ 18

Добавление пути JDK через вкладку JAVA_HOME в "Open Gradle Run Configuration" решит проблему.

Ответ 19

Если вы используете терминал для сборки и у вас есть эта ошибка, вы можете указать на jdk в комплекте с android studio в вашем файле gradle.properties:

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

Ответ 20

Я пробовал большинство лучших вариантов, но, похоже, у меня что-то не так с настройкой среды, поэтому они не помогли. Что решило проблему для меня, было переустановить jdk1.8.0_201 и jre1.8.0_201 и это решило ошибку для меня. Надеюсь, что это помогает кому-то.

Ответ 21

Я решил проблему следующим образом: