Không thể định vị tools.jar


181

Tôi đang xây dựng một dự án bằng Java.

Tôi có lỗi này:

Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar

Tôi đã cài đặt JDK và thư mục: C:\Program Files\Java\jre6\libnằm trong hệ thống của tôi nhưng tệp tools.jarkhông có ở đó.


Tôi nghĩ các công cụ thuộc về JDK chứ không thuộc về JRE. Có phải vậy không? C: \ Tệp chương trình \ Java \ jdk1.6.0_24 \ lib
Edwin Dalorzo

4
Ở một khía cạnh khác, điều tôi thấy đáng kinh ngạc là chương trình thực sự đã nói nó trông như thế nào. Vì vậy, rất ít chương trình cung cấp đầu mối hữu ích này.
Peter Flynn

Ngoài ra, hãy xem câu hỏi trùng lặp: stackoverflow.com/q/9119479/3328979 Câu trả lời có cách nào đó tốt hơn ở đây.
Arashsoft

Câu trả lời:


188

Có, bạn đã tải xuống và cài đặt Môi trường chạy thi hành Java (JRE) thay vì Bộ công cụ phát triển Java (JDK). Cái sau có các công cụ.jar, java.exe, javac.exe, v.v.


7
@olidev kiểm tra điều này ngay bây giờ nhưng vẫn không thể ngừng chỉ ra vấn đề !! Làm thế nào đây có thể là câu trả lời của bạn? Bạn đã đề cập rằng bạn đã cài đặt jdk và jre. Tôi thực sự đang đối mặt với một vấn đề tương tự và nó vẫn tiếp tục :-(. Cần biết làm thế nào bạn làm cho nó hoạt động ??
Mercenary

7
Thêm JAVA_HOME và thư mục / bin vào đường dẫn của bạn. Bạn nhận ra rằng câu trả lời này là hai tuổi, phải không?
duffymo

17
Trong ubfox: # apt-get install default-jdkvà lỗi biến mất.
Xavi Montero

2
Chìa khóa? JDK. Đó là những gì có các công cụ. JRE thì không.
duffymo 19/2/2015

2
Không cần thiết. Đối với tôi có vẻ như họ có thể đã JAVA_HOMEđặt vào jrebên trong jdkthay vì jdkchính nó.
ArtOfWarfare

88

Trong trường hợp đây vẫn là một vấn đề cho bất cứ ai, tôi có một chút làm rõ về các câu trả lời trước đó. Tôi đã gặp vấn đề tương tự khi sử dụng ant chỉ với một JDK được cài đặt. Mặc dù, trình cài đặt JDK đã cho tôi một cấu trúc thư mục như thế này:

 Directory of C:\Program Files\Java

05/08/2012  09:43 AM    <DIR>          .
05/08/2012  09:43 AM    <DIR>          ..
05/08/2012  09:46 AM    <DIR>          jdk1.7.0_04
05/08/2012  09:19 AM    <DIR>          jre6
05/08/2012  09:44 AM    <DIR>          jre7
               0 File(s)              0 bytes

và khi tôi chạy ant, nó phàn nàn về việc không tìm thấy tools.jar trong thư mục con jre7. Mãi cho đến khi set "JAVA_HOME=C:\Program Files\Java\jdk1.7.0_04"lỗi tôi biến mất.


7
điều này. cảm ơn! (dành cho những người trong chúng ta đã cài đặt các phiên bản jre / jdk khác nhau)
Daren Thomas

nó đã làm việc cho tôi..earlier tôi đã đưa ra con đường với \ bin cũng..đó là vấn đề
John

Cảm ơn, tôi ước tôi có thể cho bạn 2 up!
Lu-ca

38
  1. Cài đặt SDK Java .

  2. Thêm một biến môi trường hệ thống được gọi là JAVA_HOME với giá trị của vị trí JDK.
    Chuyển đến Bảng điều khiển \ Hệ thống và Bảo mật \ Hệ thống. Cài đặt hệ thống nâng cao, biến môi trường, biến hệ thống, mới ... Ví dụ:
    Tên biến: JAVA_HOME
    Giá trị biến: C: \ Tệp chương trình \ Java \ jdk1.7.0_21

  3. Đóng / mở lại cửa sổ CMD của bạn để biến mới có hiệu lực trước khi thử chạy lại lệnh ant.


4
Biến JAVA_HOME đã sửa tất cả mọi thứ, cảm ơn rất nhiều :)
krinn

4
PATH /bin , JAVA_HOME không có /bin
Daniel W.

1
Cảm ơn, tôi đã nới lỏng điều này trong nhiều giờ !!
kcho0

1
Làm việc như say mê trên Windows8.1
Umar Abbas

LÀM VIỆC NHƯ MỘT CHARM !! CẢM ƠN
Heidi

28

Tôi đã có cùng một vấn đề và sao chép C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar để C:\Program Files\Java\jre6\lib\ext làm việc cho tôi


4
Làm ô nhiễm các cài đặt cục bộ với các lớp rõ ràng không thuộc về nó có thể dẫn đến Hội chứng về máy của tôi. Đó là ngay cả khi một quá trình xây dựng chính thức được đưa ra. tools.jar, chứa các lớp không cốt lõi để hỗ trợ các công cụ và tiện ích trong JDK
real_paul

10

Đặt JAVA_HOMEbiến môi trường của bạn để trỏ đến C:\Program Files\Java\jdk1.7.0_02.


10

Nếu bạn ở trong Linux, bạn có thể giải quyết vấn đề này bằng cách cài đặt java trên hệ thống:

sudo apt-get install openjdk-7-jdk openjdk-7-jre

Rõ ràng, bạn có thể sử dụng 'sudo apt-get install openjdk-8-jdk openjdk-8-jre' cho Java 8
schlenger

7

Không, theo cấu trúc thư mục của bạn, bạn đã cài đặt JRE, không phải JDK. Có một sự khác biệt.

C:\Program Files\Java\jre6\lib
                      ^^^^

Nó phải là một cái gì đó như:

C:\Program Files\Java\jdk1.6.0_24

vâng, bạn đúng nhưng làm thế nào tôi có thể gỡ cài đặt jre? cảm ơn trước
olidev

Bắt đầu> Bảng điều khiển> Phần mềm (hoặc tương tự, tùy thuộc vào phiên bản Win *)
Sean Patrick Floyd

nhưng không có tùy chọn như thế để loại bỏ jre. Tôi chỉ cần kiểm tra!
olidev

@Joesy OK, nếu bạn không thể tìm thấy nó, chỉ cần để lại nó, không cần phải gỡ cài đặt nó (ngoại trừ để phục hồi dung lượng đĩa). Bạn có thể cài đặt song song nhiều JDK và / hoặc JRE
Sean Patrick Floyd


5

Đừng dành quá nhiều thời gian để tìm kiếm tools.jar. Nếu bạn gặp một lỗi như vậy, đừng buồn.

Nếu bạn đã có java JDK 1.5, hãy chuyển đến libthư mục của bạn và tools.jarsẽ có sẵn ở đó. Sao chép và dán nó vào binthư mục ant của bạn , sau đó thử sử dụng lệnhant -version .

Bạn sẽ thấy kết quả mong đợi.


2
phương pháp này có được khuyến khích không?
S_M 12/2/2015

4

Tôi đã có vấn đề tương tự trên một máy linux. Lúc đầu tôi khá thất vọng, vì tôi đã cài đặt cả JDK và JRE. Tôi đang sử dụng đồng thời phiên bản 1.6, 1.7 và 1.8 và tôi đã chơi rất nhiều với các lựa chọn thay thế để mọi thứ được đặt đúng.

Vấn đề là khá ngu ngốc để giải quyết, nhưng phản trực giác. Trong khi tôi đang sử dụng JDK chính xác, tôi đã chú ý đến đường dẫn của các công cụ mà maven đã phàn nàn - nó đang mong đợi nó

$JAVA_HOME\..\lib\tools.jar

Các $JAVA_HOMEbiến chỉ trực tiếp cho tôi jdkthư mục ( /usr/local/javamà cũng là đúng $PATHmục và liên kết sym thay thế). Nó thực sự tìm kiếm libthư mục bên ngoài thư mục java, bởi vì:

$JAVA_HOME\..\lib\tools.jar

sẽ giải quyết

/usr/local/lib/tools.jar

và đó không phải là một vị trí hợp lệ.

Để giải quyết điều này, $JAVA_HOMEthay vào đó , biến phải trỏ đến vị trí này /usr/local/java/jre(giả sử đường dẫn JDK là /usr/local/java) - thực sự có jrethư mục bên trong thư mục cài đặt JDK, đi kèm với mỗi JDK. Thiết lập mới này sẽ khiến maven nhìn vào thư mục JRE, đó là một phần của JDK:

$JAVA_HOME\..\lib\tools

mà bây giờ giải quyết

/usr/local/java/jre/../lib/tools.jar

và cuối cùng để

/usr/local/java/lib/tools.jar

đó là nơi tools.jarthực sự cư trú.

Vì vậy, ngay cả các bạn thực sự đang sử dụng JDK thay vì JRE, $ JAVA_HOME phải trỏ đến JRE. Hãy nhớ rằng, hệ điều hành thay thế vẫn nên tham khảo JDK.


1
Tôi gặp vấn đề tương tự với windows, sử dụng cách bạn giải quyết vấn đề của tôi.
Yigang Wu

Tôi đã thử tất cả những điều này và vẫn gặp sự cố với tools.jar. Randoop có đáng để nỗ lực không? Có nghĩa là nó tạo ra các bài kiểm tra đơn vị phong nha? Phần bực bội của điều này là MỌI chương trình java khác trên hộp Windows của tôi hoạt động tốt.
Ông Smith

@MrSmith, Randoop tìm đường đi khi bạn gặp lỗi là gì. Có lẽ Randoop có cài đặt env riêng cho nó biết JRE đang ở đâu? Ngoài ra, bạn đã mở lại các cửa sổ shell của mình (nếu chạy từ shell) sau khi thay đổi các biến env của bạn?
Ivaylo Slavov

3

đi đến đường dẫn jdk của bạn nơi bạn đã cài đặt java của mình

Ví dụ: Trong PC của tôi, JDK được cài đặt theo đường dẫn sau

"C: \ Tệp chương trình \ Java \ jdk1.7.0_17 \";

Sau khi đi đến thư mục lib, ví dụ: "C: \ Program Files \ Java \ jdk1.7.0_17 \ lib"

trong thư mục lib có tệp tool.jar

Sao chép tệp này và qua nó trong lib forlder của thư mục jre7, vd

"C: \ Tệp chương trình \ Java \ jre7 \ lib"


2

Tôi đã gặp vấn đề tương tự ngay cả sau khi cài đặt Java JDK và đặt JAVA_HOMEthành ..\jdk1.6.0_45\binthư mục.

Ant vẫn đang cố gắng tìm tools.jartrong C:\Program Files\Java\jre6\libthư mục.
Tôi đã sửa nó bằng cách thêm JAVACMDbiến môi trường và đặt đường dẫn cho nó java.exevào jdkthư mục.
Trong trường hợp của tôi, nó làC:\Program Files\Java\jdk1.6.0_45\bin\java.exe


2

Bạn có thể phải đối mặt với vấn đề tương tự trên Ubuntu:

Embedded error: tools.jar not found: /usr/lib/jvm/java-7-openjdk-amd64/jre/../lib/tools.jar

Vấn đề là với JAVA_HOME không được đặt đúng.

Vì vậy, trên Ubuntu 14.04 x64 bằng Java8:

sudo apt-get install openjdk-8-jdk openjdk-8-jre
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

2

nó đã được giải quyết với tôi trong windows os bằng cách đặt biến JAVA_HOME trước khi chạy như sau:

đặt JAVA_HOME = C: \ Tệp chương trình \ Java \ jdk1.8.0_111


Tôi đã buộc phải thế này. Ant 10+ đang tìm kiếm JDK trong một biến không xác định. Tôi không thể tìm thấy nơi nó nhận được JDK, nhưng khi tôi có thể trong dòng lệnh và buộc JAVA HOME nó hoạt động.
Cummings

2

Như nhiều người đã đề cập, có vẻ như bạn đang tìm kiếm trong JRE của mình thay vì JDK cho tệp tools.jar.

Tôi cũng muốn đề cập rằng trên các phiên bản gần đây của JDK, không có tệp tools.jar nào nữa. Tôi đã tải xuống JDK gần đây nhất cho đến ngày hôm nay (JDK phiên bản 12) và tôi không thể tìm thấy bất kỳ tools.jar nào. Tôi đã phải tải xuống JDK phiên bản 8 (1.8.0) tại đây https://www.oracle.com/technetwork/java/javase/doads/jdk8-doads-2133151.html để lấy tệp tools.jar. Tôi đã tải xuống phiên bản đó, lấy tệp tools.jar và đưa nó vào thư mục lib của phiên bản gần đây.


1

Đảm bảo rằng cả hai đường dẫn% JAVA_HOME% và% JAVA_HOME% / bin được thêm vào biến PATH của bạn.

Tất cả các câu trả lời về việc sao chép tools.jar vào đúng vị trí là một ý tưởng tồi.

Đảm bảo rằng IDE của bạn có thể tìm thấy các lọ này theo cách nó được thiết kế và dự định.


1

Trong cửa sổ nhật thực> tùy chọn> Java> JRE đã cài đặt, tôi đã chỉ thư mục vào thư mục jre trong jdk 1.7 và tôi đã làm việc với tôi ví dụ: C: \ Program Files \ Java \ jdk1.7.0_71 \ jre


1

Tôi đã có JDK_path ( C:\Program Files\Java\jdk1.7.0_79) trong tôi JAVA_HOMEvà cả JDK_path \ bin trong tôiPATH . Nhưng, con kiến ​​của tôi vẫn đang sử dụng JRE thay vì JDK.

Vấn đề là tôi đã có C:\ProgramData\Oracle\Java\javapathtrước PATHbiến JDK_path của mình . Tôi chỉ đơn giản là di chuyển JDK_path của mình trước khi tiên tri và vấn đề được giải quyết.


1

giải quyết vấn đề này Tôi chỉ đơn giản là sao chép tệp tools.jar từ C: \ Program Files \ Java \ jre1.8.0_112 \ lib sang C: \ Program Files \ Java \ jdk1.8.0_112 \ lib để tôi có hai tools.jar tập tin thay vì một và vấn đề biến mất.


0
Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar

nếu bạn đã cài đặt jdk rồi

..Java/jdkx.x.x

thư mục phải tồn tại ở đó vì vậy trong gian hàng của nó và đưa ra đường dẫn đầy đủ như

C:\Program Files\Java\jdk1.6.0\lib\tools.jar

0

Hãy chắc chắn rằng đường dẫn lớp của bạn được đặt chính xác và trỏ đến phiên bản chính xác của JDK mà bạn đã cài đặt. Ngoài ra, bạn có đang sử dụng Open JDK không? Tôi đã gặp vấn đề này trước khi tôi cố gắng chuyển từ JDK mở sang Suns JDK. Đây là một ví dụ về cách vấn đề đó có thể được khắc phục.


0

maven-Trình biên dịch-plugin sử dụng jdk, không phải jre, tools.jar có trong C: \ Program Files \ Java \ jdk1.6.0 \ lib \ tools.jar bạn phải cấu hình dự án JRE System Libary bằng jdk, không phải jar. Đây là giải pháp đơn giản nhất.


0
  • Nhấp chuột phải vào tập tin ant của bạn
  • Chuyển đến "Chạy dưới dạng", sau đó nhấp vào "Ant Build ..."
  • Chuyển đến tab "JRE"
  • Chọn một JDK chứ không phải JRE

0

Đối với tôi những gì đang hoạt động: Tôi đã tải xuống một phiên bản Java 1.7 cũ

Tôi thực sự đã đặt JAVA_HOME của mình từ các tệp C: / chương trình X86 / Java BUT sau khi tôi cài đặt phiên bản 1.7 Tôi có một Java khác trong các tệp chương trình / Java. Và tại thời điểm này, tôi đã tìm thấy tools.jar ở đây. Sau đó, tôi đã thay đổi cho con đường mới này và nó đang hoạt động


0

Tôi cũng đã phải đối mặt với lỗi tương tự. Điều này đã bị xóa sau khi đặt đường dẫn Java_Home thành C: \ Program Files \ Java \ jdk1.8.0_121. Vui lòng đảm bảo bin không được bao gồm trong đường dẫn và không có dấu gạch chéo nào sau jdk1.8.0_121 sau khi bạn đã xác định% JAVA_HOME% \ bin trong biến đường dẫn hệ thống.


0

Nếu bạn đang ở trong môi trường RHEL, tên gói chứa tools.jar sẽ kết thúc bằng "openjdk-devel".


0

Đây là giải pháp cho Windows: trong Máy tính> Cài đặt hệ thống nâng cao> Nâng cao> Biến môi trường ... , thêm điều này vào Biến hệ thống :

nhập mô tả hình ảnh ở đây


0

Tôi đã tải xuống tools.jar và sau đó tôi đã sao chép nó vào đường dẫn trong thông báo lỗi.

C: \ Tệp chương trình \ Java \ jdk-11.0.1 \ bin> dán vào đây tools.jar

Sau đó tôi đã khởi động lại Spring Tool Suit 4 và mọi thứ đều hoạt động. Khi tôi đang cố gắng khắc phục vấn đề đó, tôi đã tạo ra biến môi trường mới: Bảng điều khiển / Hệ thống / Được tiến hành / Biến môi trường / Tên mới: JAVA_HOME Giá trị: C: \ Chương trình tệp \ Java \ jdk-11.0.1 Nhưng tôi không biết là nó cần thiết


0

có thể bạn đã cập nhật các JRE trong HĐH và phần bổ sung đã thêm vào "đường dẫn" của các biến môi trường một mục "... / Oracle / jer" ghi đè lên JAVA_HOME của bạn. cố gắng xóa nó khỏi "đường dẫn" bằng cách rời khỏi JAVA_HOME.


0

Trong trường hợp có ích, vấn đề đối với tôi là tôi đã có 2 mục trong biến môi trường PATH của mình, chỉ đến một vị trí có chứa tệp thực thi javaw.

Tôi đã dọn sạch biến để đảm bảo rằng "% JAVA_HOME% \ bin" là mục duy nhất tham chiếu đến một vị trí có chứa các tệp thực thi java của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.