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_HOME
biến chỉ trực tiếp cho tôi jdk
thư mục ( /usr/local/java
mà cũng là đúng $PATH
mục và liên kết sym thay thế). Nó thực sự tìm kiếm lib
thư 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_HOME
thay 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ó jre
thư 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.jar
thự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.