Gradle ไม่พบ tools.jar


160

ฉันใช้ javadoc doclets กับ gradle ดังนั้นฉันต้องใช้ package tools .jar ซึ่งอยู่ในโฟลเดอร์ lib จาก jdk (1.6.0_26 ในกรณีของฉัน)

ประเด็นก็คือการไล่ระดับสีไม่ได้ดำเนินการโดยอัตโนมัติดังนั้นฉันจึงเพิ่มชุดเครื่องมือนั้นลงในโฟลเดอร์ libs ของฉันแล้วเพิ่มลงใน dependencies.gradle

ตอนนี้ฉันต้องการที่จะนำมันโดยตรงจากบ้านของฉัน JDK เป็น dependencies.gradle ของฉัน มีวิธีทำเช่นนั้นหรือไม่? ฉันได้ลองสิ่งต่อไปนี้ในการพึ่งพาของฉันแล้ว

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

แต่ไม่พบในขณะที่รวบรวม


2
เป็นมูลค่าการกล่าวขวัญว่าเป็นเคอร์เซอร์ก่อนการแก้ปัญหานี้และเมื่อฉันพบเมื่อคุณได้รับสิ่งนี้คุณจะต้องตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง JDK จริง ๆ แล้ว: P และในบางระบบคุณจะต้อง จำเป็นต้องติดตั้งแพคเกจ devel JDK เพื่อรับ tools.jar
mrooney

คำตอบ:


140

ฉันมีปัญหานี้เมื่อฉันพยายามเรียกใช้คำสั่งผ่าน CLI

มันเป็นปัญหากับระบบการมองหาที่ JRE D:\Program Files\Java\jre8\binโฟลเดอร์คือ ถ้าเรามองเข้าไปที่นั่นก็ไม่มีTools.jarเลย

คุณต้องไปหาที่JDKเป็นในกรณีของฉัน: D:\Program Files\Java\jdk1.8.0_11และถ้าคุณดูในไดเรกทอรีคุณจะเห็นlibTools.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ตัวแปรแล้ว?
Eric

3
ถึงแม้ว่า tools.jar จะอยู่ใน \ lib แต่เพียงเพิ่ม \ bin ไปยังเส้นทางเช่นเดียวกับวิธีการแก้ปัญหาที่ได้ผลสำหรับฉัน แต่อย่าถามว่าทำไม
PHPirate

1
โดยปกติจะต้องมีการรีสตาร์ท / ล็อกเอาต์เพื่อให้การเปลี่ยนแปลงมีผล
reiner_zuphall

4
ฉันต้องลบรายการเส้นทาง 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 โฟลเดอร์) บรรทัดการคอมไพล์ใน dependencies.gradle ควรเป็น:

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

28
ดังนั้นวิธีการตั้งค่า java.home ในความคิดกับ gradle?
Chinaxing

73

ฉันได้รับข้อผิดพลาดเดียวกันโดยใช้ Eclipse พยายามรัน Gradle Task ทุกครั้งที่ฉันเรียกใช้คำสั่ง (เช่นสงคราม) กระบวนการจะทำให้เกิดข้อยกเว้นเช่น:

ไม่พบ tools.jar โปรดตรวจสอบว่า C: \ Program Files \ Java \ Jre8 "เป็นการติดตั้ง JDK ที่ถูกต้อง

ฉันลองวิธีแก้ปัญหาที่ระบุไว้ในโพสต์นี้ แต่ไม่มีใครแก้ปัญหานี้ได้ นี่คือทางออกของฉัน:

  1. ไปที่มุมมอง "งานการไล่ระดับสี"
  2. คลิกขวาที่งานที่คุณต้องการดำเนินการ
  3. เลือก Open Gradle Run Configuration
  4. ในแท็บ "Java Home" เลือกที่เก็บ JDK ในพื้นที่ของคุณจากนั้นคลิกตกลง

ทำงานอีกครั้งสนุก!


2
ฉันพบคำตอบนี้หลังจากผ่านไปหลายชั่วโมงของการค้นหาและในที่สุดก็ใช้งานได้ ขอบคุณมาก!
Alan47

5
ฉันไม่พบ Open Gradle Run และ Java Home คุณอธิบายเพิ่มเติมได้ไหม

เป็นสิ่งใหม่สำหรับสิ่งนี้หนึ่งในมุมมอง "ไปที่" งาน Gradle "จะทำอย่างไร? ฉันไม่เห็น Gradle ใด ๆ ภายใต้เมนูมุมมองหรืออะไรที่มีป้ายกำกับเช่นนั้น
Dronz

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

ผมมีกรณีคล้ายกันโดยใช้อูบุนตู เครื่องมีการติดตั้ง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
Dori

ฉันชอบวิธีนี้ มันสวยและพกพาได้
Adam Plumb

4
วิธีนี้ไม่ทำงานกับ Gradle 4.x NullPointerExceptionฉันได้รับ
Thunderforge

1
ฉันสามารถจินตนาการว่ามันคืนค่า null เมื่อไม่มี tools.jar พร้อมใช้งานกับ JDK ล่าสุด ดู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


ขอบคุณ Richard! มันช่วยฉันได้จริงๆ! ฉันกำลังพยายามใช้ "react-native run-android" และได้รับข้อผิดพลาด: * มีอะไรผิดปกติ: การดำเนินการล้มเหลวสำหรับภารกิจ ': แอป: compileDebugJavaWithJavac' > ไม่พบ 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 ซึ่งพยายามค้นหา tools.jar ในเส้นทาง java jdk ที่ต้องการ
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

อาจจะช้าไปสองปี แต่ฉันพบปัญหาเดียวกันเมื่อไม่นานมานี้และนี่คือวิธีการแก้ปัญหาที่ฉันได้พบหลังจากโพสต์นี้ :

import javax.tools.ToolProvider

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

มันควรจะทำงานได้ถ้า java.home ชี้ไปที่ไดเรกทอรีที่ไม่อยู่ในไดเรกทอรี JDK และแม้แต่ใน Mac OS ที่คุณมี classes.jar แทน tools.jar


ไม่สามารถเรียกใช้ getURLs วิธี () บนวัตถุ null
ซ่อนเร้น

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 :)
Saher Ahwal

6

ในระบบของฉัน (ชนะ 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

ใช้งานได้ (สำหรับฉัน)!


ปัญหาเดียวกันแก้ไขให้ฉันยังชนะ 10 / Android Studio นอกจากนี้ไม่มีวิธีการแก้ปัญหาข้างต้นที่จริงดูเหมือนว่าจะดาวน์โหลด "Tools.jar" ... เพียงแค่ไม่ได้มาพร้อมกับ
jre

ทำงานให้ฉันด้วย ฉันสร้าง gradle.properties ในรูทโปรเจ็กต์ที่มีorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan

3

ลินุกซ์

เปิด/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

สิ่งนี้ใช้ได้กับฉัน:

ฉันได้รับข้อความ

การดำเนินการล้มเหลวสำหรับงาน ': แอป: 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
  • ลองใหม่

3

หากคุณใช้เทอร์มินัลเพื่อสร้างและคุณมีข้อผิดพลาดนี้คุณสามารถชี้ไปที่ jdk ที่มาพร้อมกับ android studio ในgradle.propertiesไฟล์ของคุณ:

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

2

เช่นเดียวกับคำตอบอื่น ๆ ผมตั้งorg.gradle.java.homeคุณสมบัติในgradle.propertiesไฟล์ แต่เส้นทางที่มี \ separators ไม่ทำงาน (การสร้างบน windows 10):

Java home ที่จัดหาผ่าน '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> อาร์กิวเมนต์ระบุ Workspace JRE และระบุ JDK ของคุณ
  • ในหน้าต่าง> การกำหนดค่าตามความชอบ> Java> InstalledJREs ระบุ JDK ของคุณเป็นค่าเริ่มต้น

2

ในกรณีของฉัน (Windows 10) หลังจากการอัปเดต Java ฉันทำตัวแปรสภาพแวดล้อมของฉันหายไปดังนั้นฉันจึงแก้ไขการเพิ่มตัวแปรอีกครั้งตามขั้นตอนต่อไปนี้https://confluence.atlassian.com/doc/setting-the-java_home-variable-in -Windows-8895.html


2

ฉันแก้ไขปัญหาด้วยวิธีนี้:

  • ดาวน์โหลดไฟล์ tools-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 }
}

ใช่มันทำให้มันเป็นเส้นทางคลาส แต่ยังคงได้รับปัญหา
Abhishek Gupta

1

การเพิ่มเส้นทาง JDK ผ่านแท็บ JAVA_HOME ใน "Open Gradle Run Configuration" จะช่วยแก้ปัญหาได้


0

ฉันได้ลองใช้ตัวเลือกส่วนใหญ่แล้ว แต่ดูเหมือนว่าฉันมีบางอย่างผิดปกติกับการตั้งค่าสภาพแวดล้อมของฉันดังนั้นพวกเขาจึงไม่ได้ช่วย สิ่งที่แก้ไขปัญหาสำหรับผมคือการติดตั้งใหม่ jdk1.8.0_201และjre1.8.0_201และแก้ไขข้อผิดพลาดสำหรับฉัน หวังว่าจะช่วยใครซักคน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.