JAVA_HOME không được xác định chính xác


14

Tôi đã cài đặt java jdk hotspot 1.7. Khi tôi gõ java -versiontôi đang nhận được:

java version "1.7.0" 
Java(TM) SE Runtime Environment (build 1.7.0-b147)

Chính xác.

Và tôi đã cố gắng cài đặt maven, và thêm vào /etc/environmenttập tin:

JAVA_HOME=/usr/lib/jvm/jdk1.7.0
M2_HOME=/usr/local/apache-maven/apache-maven-3.0.4
MAVEN_HOME=/usr/local/apache-maven/apache-maven-3.0.4
M2=/usr/local/apache-maven/apache-maven-3.0.4/bin

Bây giờ khi tôi gõ mvn tôi đang nhận được:

Error: JAVA_HOME is not defined correctly.   We cannot execute
”/usr/lib/jvm/jdk1.7.0”/bin/java

Tuy nhiên tôi không đặt "đánh dấu cho JAV_HOME var trong tệp môi trường.

Nó đang cố chạy khỏi

”/usr/lib/jvm/jdk1.7.0”/bin/java

con đường, thực ra nó phải là

/usr/lib/jvm/jdk1.7.0/bin/java

Khi tôi chỉ huy

$JAVA_HOME

Tôi đang nhận được:

bash: ”/usr/lib/jvm/jdk1.7.0”: No such file or directory

Tôi chắc chắn đường dẫn ( /usr/lib/jvm/jdk1.7.0) là chính xác.


Bạn có thể làm ls -al /usr/lib/jvmvà xác nhận rằng 'jdk1.7.0' là định dạng cho tên thư mục không? Khi sử dụng Oracle, họ có xu hướng sử dụng tên thư mục lạ
Thomas Ward

ls /usr/lib/jvm/java-7ls "/usr/lib/jvm/java-7"/binnăng suất, và sẽ mang lại kết quả tương tự cho tôi (không trống). Phần cuối cùng, java-7, là kết quả của một sửa đổi thủ công - nó có thể và sẽ có một chút khác biệt đối với bạn. Xác minh rằng thư mục đó tồn tại (jdk1.7.0).
người dùng không xác định

Tôi đã nhận được total 44 drwxr-xr-x 3 root root 4096 Jun 28 01:57 . drwxr-xr-x 184 root root 36864 Jun 28 01:34 .. drwxr-xr-x 10 root root 4096 Jun 27 23:30 jdk1.7.0 sau khi chạy ls -al /usr/lib/jvm lệnh này
Kamoliddin

Lưu ý rằng để xem một biến trong bảng điều khiển của bạn, bạn phải gõ : echo $VARNAME. Nếu bạn chỉ làm $VARNAMEthì nó sẽ thực thi những gì trong biến đó.
Alexis Wilke

Câu trả lời:


15

JAVA_HOMEnên thiết lập để tên của thư mục đó chứa các binthư mụcchứa các file thực thi Java (nói riêng,java chính nó).

Giả sử bạn có một /usr/lib/jvm/jdk1.7.0thư mục, nó có thể chứa jrethư mục con chứa thư mục binchứajava và các tệp thực thi liên quan.

Vì vậy, bạn có lẽ nên được thiết lập JAVA_HOMEđể /usr/lib/jvm/jdk1.7.0/jrehơn là /usr/lib/jvm/jdk1.7.0.


Việc cài đặt JDK, không chỉ JRE thường dẫn đến thư mục JDK chứa thư mục bin, cũng như JRE-dir, bản thân nó chứa một thư mục bin. Nhưng JAVA_HOMEluôn luôn được đặt thành thư mục mẹ, không phải là jrethư mục.
người dùng không xác định

Thật thú vị, tôi cần đặt nó thành jdk không? Tôi sẽ viết mã bằng java, biên dịch, triển khai, v.v.
Kamoliddin

@Kamoliddin Nếu Maven đang sử dụng $JAVA_HOMEđể biết javaccác nhị phân phát triển ở đâu và khác, thì có, bạn sẽ cần đặt nó vào jdkthư mục chứa binthư mục chứa các nhị phân đó.
Eliah Kagan

Cảm ơn, tôi không biết, nó hoạt động sau khi khởi động lại, tôi nghĩ rằng tôi không cần phải khởi động lại để thay đổi được áp dụng. Tôi đã không thay đổi bất cứ điều gì. Nó đã làm việc.
Kamoliddin

Không chắc chắn tại sao anh ta sử dụng jdk1.7.0 cả .. /usr/lib/jvm/java nên đủ cho cả hai javajavac. Các lựa chọn thay thế đảm nhận việc này
Brian
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.