Gradle이 tools.jar을 찾을 수 없습니다


160

gradle과 함께 javadoc doclet을 사용하고 있기 때문에 jdk (내 경우 1.6.0_26)의 lib 폴더에있는 tools.jar 패키지를 사용해야합니다.

요점은 gradle이 자동으로 가져 가지 않으므로 해당 도구 패키지를 내 libs 폴더에 추가 한 다음 dependencies.gradle에 추가하는 것입니다.

이제 JDK 집에서 직접 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. 여기에 이미지 설명을 입력하십시오

그런 다음 JAVA_HOME을 포함하도록 PATH 변수를 편집해야합니다. %JAVA_HOME%/bin; 여기에 이미지 설명을 입력하십시오

명령 프롬프트를 다시 열고 실행해야합니다.


15
tool.jar이 폴더 에 %JAVA_HOME%\lib;없습니다 bin.
GMsoF

5
이것은 우리가 모두를 추가해야한다는 뜻인가 %JAVA_HOME%/bin하고 %JAVA_HOME%/lib받는 Path다음 변수?
Eric

3
tools.jar이 실제로 \ lib에 있지만 솔루션에서와 같이 경로에 \ bin 만 추가하면 나에게 도움이되지만 그 이유는 묻지 않습니다.
PHPirate

1
변경 사항을 적용하려면 일반적으로 재시작 / 로그 아웃이 필요합니다.
reiner_zuphall

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)가 아니라고 생각했다. : \ jdk1.6.0_26 \ lib 폴더). dependencies.gradle의 컴파일 라인은 다음과 같아야합니다.

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

28
그래서 gradle과 함께 아이디어로 java.home을 설정하는 방법은 무엇입니까?
Chinaxing

73

Eclipse를 사용하여 Gradle Task를 실행하려고 할 때 동일한 오류가 발생했습니다. 명령을 실행할 때마다 (예 : 전쟁) 프로세스에서 다음과 같은 예외가 발생했습니다.

tools.jar을 찾을 수 없습니다. C : \ Program Files \ Java \ Jre8 "이 유효한 JDK 설치인지 확인하십시오.

이 게시물에 나열된 솔루션을 시도했지만 아무도이 문제를 해결하지 못했습니다. 여기 내 해결책 :

  1. "Gradle Task"보기로 이동
  2. 실행할 작업을 마우스 오른쪽 버튼으로 클릭하십시오.
  3. Open Gradle Run Configuration을 선택하십시오.
  4. "Java Home"탭에서 로컬 JDK 저장소를 선택한 후 확인을 클릭하십시오.

다시 달리고 즐기십시오!


2
몇 시간 동안 검색 한 후에이 답변을 찾았으며 마침내 효과가있었습니다. 정말 고맙습니다!
Alan47

5
Open Gradle Run 및 Java Home을 찾을 수 없습니다. 더 설명해 주시겠습니까?

이것에 익숙하지 않다면 어떻게 ""작업 "보기로 가겠습니까? 보기 메뉴에 Gradle이 표시되지 않거나 이와 비슷한 레이블이 표시되지 않습니까?
Dronz

48

방금 gradle.properties다음 내용 으로 파일을 추가했습니다 .

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

5
리눅스에서는을 ~/.gradle/gradle.properties추가하여 파일 을 편집 할 수도 있습니다 org.gradle.java.home=/usr/lib/jvm/java. Fedora 24에서 나를 위해 일합니다.
samsong8610

36

우분투를 사용하는 비슷한 경우가있었습니다 . 시스템에는 JRE 만 설치되었습니다. 그래서 방금 JDK 를 설치하기 위해 아래 명령을 실행했습니다 .

sudo apt install openjdk-8-jdk


1
예, JRE 대신 JDK를 설치하면 문제가 해결되었습니다.
peschü

20

이 솔루션에 대해서도 어려움을 겪고있었습니다. 여기에 설명 된대로 Gradle로 더 좋은 방법을 찾았 습니다 . Gradle 자체에서 JVM / JDK 정보를 얻을 수 있습니다.

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

너무 간단합니다.


3
내가 compile대신 사용하면 이것은 나를 위해 작동runtime
Dori

나는이 해결책을 좋아한다. 멋지고 휴대용입니다.
Adam Plumb 2016 년

4
이 솔루션은 Gradle 4.x에서 작동하지 않습니다. 나는을 얻는다 NullPointerException.
Thunderforge

1
최신 JDK에서 사용 가능한 tools.jar이 없으면 null을 반환한다고 상상할 수 있습니다. 참조 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


고마워 Richard! 정말 도움이되었습니다! "react-native run-android"를 실행하는 데 어려움을 겪고 있었고 오류가 발생했습니다. > tools.jar를 찾을 수 없습니다. /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre에 유효한 JDK 설치가 포함되어 있는지 확인하십시오. 이제 작동합니다! 다시 감사합니다!
Matheus Gontijo

고마워 Richard .. 그것은 또한 나를 위해 일했다. 기본적으로 JAVA_HOME 경로 문제로 원하는 Java jdk 경로에서 tools.jar를 찾으려고했습니다.
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

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.jarJRE 디렉토리 ( 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

리눅스

nano 또는 gedit/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로 빌드된다는 것입니다. 일식에서 빌드했기 때문에 이것도 효과가있었습니다.

  • 창> 환경 설정> Gradle> 인수에서 Workspace JRE를 지정하고 JDK를 지정하십시오.
  • Window> Preferences> Java> InstalledJREs에서 JDK를 기본값으로 지정하십시오.



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.