2015-04-16 27 views
5

Tôi cố gắng để chạy ứng dụng java và tôi nhận được lỗi sau,Không thể tìm thấy một com.sun.tools.javac.Main trình biên dịch javac không phải là về lỗi classpath

Không thể tìm thấy một trình biên dịch javac ; com.sun.tools.javac.Main không nằm trên classpath. Có lẽ JAVA_HOME không trỏ đến JDK

Tôi đã trải qua nhiều SO câu hỏi và giải pháp tìm thấy là JAVA_HOME nên điểm đến JDK, không JRE.

Sau đó, tôi đã cố gắng để in JAVA_HOME tại dấu nhắc lệnh,

enter image description here

tôi đã thiết lập JAVA_HOME này từ tôi dụng vi tính> Properties-> biến env -> hệ thống VAR như dưới đây,

enter image description here

Tôi cũng đã thêm biến mới trong nhật thực sử dụng tùy chọn là,

enter image description here

Và cuối cùng tôi vẫn gặp lỗi tương tự. Có gì sai với JAVA_HOME?

Cập nhật:

Trong eclipse-preferences-installed jres chỉ có một mục là hiện tại và đó là jdk và chọn,

enter image description here

Và dưới project propertiesjava build path-librariesJRE System Liberary [jdk1.8.0_31] được sử dụng .

enter image description here

Cập nhật 1:

C:\Program Files\Java\jdk1.8.0_31 có thư mục có tên jre. Đó có phải là thư mục jre gây ra sự cố này không? Tôi có thể xóa thư mục này không? Có cách nào để thêm chỉ jdk tự do trong dự án?

+0

Hãy xác nhận xem bạn có bắt đầu một bảng điều khiển mới sau khi đặt biến hay không? Nếu nó là một giao diện điều khiển mới hơn với tôi tất cả mọi thứ khác trông sạch sẽ và chính xác, tôi đề nghị bạn gỡ bỏ cài đặt và cài đặt lại java? Đôi khi, lỗi cài đặt có ở đó. Sử dụng tệp .msi hoặc .exe để cài đặt thay vì sao chép thư mục dán. – aProgrammer

Trả lời

7

Eclipse là một IDE và như vậy, nó có (ít nhất) hai phiên bản Java: một phiên bản mà nó sử dụng để chạy (JAVA_HOME) và một JVM mà nó sử dụng để chạy ứng dụng của bạn. Cả hai không cần phải giống nhau. Vì vậy, để khắc phục vấn đề của bạn, bạn cần xem xét các ưu tiên của Eclipse, cụ thể là Installed JREs cung cấp cho bạn một danh sách các máy ảo Java mà Eclipse sẽ sử dụng để chạy mã Java từ các dự án. Tôi đoán là sẽ có một số mục có và mặc định sẽ là một JRE thay vì một JDK.

Đảm bảo bạn có JDK trong danh sách và sau đó chuyển đến dự án của bạn. Trong dự án, bạn có thể chọn máy ảo Java nào để sử dụng theo Java Build Path ->Libraries.

[EDIT] Nhìn kỹ vào ảnh chụp màn hình cuối cùng: Bạn đã cấu hình Eclipse để sử dụng C:\Program Files\Java\jdk1.8.0_31\jre có nghĩa là bạn đã chĩa vào JRE bên trong JDK. Sử dụng C:\Program Files\Java\jdk1.8.0_31 thay vào đó (không có \jre ở cuối).

[CHỈNH SỬA 2] Nếu bạn xóa thư mục jre, Java sẽ ngừng hoạt động. Bất kỳ JDK nào cũng chứa một JRE. JRE chứa rt.jar với String.class và các loại tương tự. Trình biên dịch Java là trong tools.jar có trong JDK.

Nếu tái tạo mục nhập JRE trong Eclipse không giúp được gì, bạn sẽ phải thêm nó theo cách thủ công vào đường dẫn lớp.

Bạn có thể sử dụng biến ("Thêm biến ...") để đảm bảo Eclipse cập nhật đường dẫn khi bạn chuyển sang một JRE mới/khác. Hãy thử JAVA_HOME với tiện ích mở rộng lib/tools.jar

+0

vui lòng xem câu hỏi được cập nhật. – fledgling

+1

Xem các chỉnh sửa của tôi; Bạn đã chọn JRE bên trong JDK. –

+0

Vui lòng xem câu hỏi được cập nhật. – fledgling

Các vấn đề liên quan