Câu hỏi Làm thế nào để thiết lập JAVA_HOME cho Java?


Tôi đã cài đặt một phiên bản Java. Làm thế nào chúng ta có thể thiết lập $JAVA_HOME biến môi trường chính xác?


249
2017-08-13 22:31


gốc




Các câu trả lời:


Bạn có thể đặt JAVA_HOME trong /etc/profile như Petronilla Escarabajo gợi ý. Nhưng vị trí ưa thích cho JAVA_HOME hoặc bất kỳ biến hệ thống nào là /etc/environment.

Mở /etc/environment trong bất kỳ trình soạn thảo văn bản nào như nano hoặc là gedit và thêm dòng sau:

JAVA_HOME="/usr/lib/jvm/open-jdk"

(đường dẫn java có thể khác nhau)

Sử dụng source để tải các biến, bằng cách chạy lệnh này:

source /etc/environment

Sau đó kiểm tra biến, bằng cách chạy lệnh này:

echo $JAVA_HOME

Cập nhật

Thông thường hầu hết các hệ thống linux nguồn / etc / môi trường theo mặc định. Nếu hệ thống của bạn không làm điều đó, hãy thêm dòng sau vào ~/.bashrc (Cảm ơn @pje)

source /etc/environment

345
2017-08-14 02:17



Tôi nhận được: JDK Bắt buộc: 'tools.jar' có vẻ không nằm trong classpath IDEA. Hãy đảm bảo JAVA_HOME trỏ tới JDK thay vì JRE. - anon58192932
@advocate - Bạn có lẽ nên đăng câu hỏi của riêng bạn cho điều đó. Nhưng manh mối nằm trong thông điệp; bạn cần phải chỉ ra một JDK không phải là một JRE. - David Edwards
Khi tôi cố gắng chạy Android Studio (có IntelliJ IDEA làm cơ sở), tôi đã có một thông báo lỗi rất giống với @ advocate's: "'tools.jar' có vẻ không nằm trong classpath của Android Studio." Sau khi chơi rất nhiều với JAVA_HOME mà không thành công, tôi quyết định xem studio.sh, shellscript khởi động Android Studio. Như một dự đoán hoang dã, tôi đặt JDK_HOME với cùng giá trị mong đợi cho JAVA_HOME, và thì đấy! Nó được cài đặt mà không có vấn đề lớn. - Hilton Fernandes
Đối với những người làm phát triển phần mềm, không đặt JAVA_HOME của bạn trong / etc / environment trừ khi bạn muốn khởi động lại mọi lúc bạn chuyển đổi các phiên bản JDK. - HDave
Như những người khác đã chỉ ra, điều này không dính giữa các phiên cuối. Những gì tôi đã làm để giải quyết điều này chỉ là thêm dòng source /etc/environment lên đầu tệp cấu hình bash của tôi ~/.bashrc để nó tải tất cả các cài đặt môi trường của tôi khi khởi động. Làm việc cho tôi cho đến nay. - pje


Để đặt JAVA_HOME biến môi trường, làm như sau:

  1. Khởi chạy Terminal bằng cách nhấn Ctrl+Alt+T trên bàn phím của bạn.
  2. Nhập lệnh sau:
    $ gksudo gedit /etc/environment
  3. Tùy thuộc vào nơi bạn đã cài đặt Java của mình, bạn sẽ cần phải cung cấp đường dẫn đầy đủ. Trong ví dụ này, tôi đã cài đặt Oracle JDK 7 trong /usr/lib/jvm/java-7-oracle danh mục.
    Cuộn đến cuối tệp và nhập thông tin sau:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Lưu tệp của bạn và thoát gedit.
  5. Cuối cùng, tải lại hệ thống PATH bằng lệnh sau:
    $ . /etc/environment

Các phương pháp trên sẽ giúp bạn tiết kiệm những rắc rối trong việc phải chạy các lệnh mỗi khi bạn đăng nhập vào máy tính của bạn.


67
2017-08-13 23:01



Làm thế nào. / etc / môi trường làm việc? - Sudip Bhandari
Là sự bổ sung của export lệnh cần thiết trong /etc/environment? - pkaramol
@pkaramol Tôi đã phải thêm JAVA_HOME xuất khẩu vào 16.04LTS để làm cho nó tải khi khởi động. - adeen-s
@ adeen-s Bạn đã thêm export vào một dòng trong /etc/environment và nó giúp gì? Tệp đó chứa các định nghĩa biến được phân tích cú pháp thành =các cặp tên-giá trị được giới hạn; nội dung của nó không được thực hiện như lệnh. (Xem man pam_env.) Vì vậy, trừ khi bạn riêng biệt xử lý tệp như thể đó là một tập lệnh (chẳng hạn như bằng cách truyền /etc/environment để bash's ./source xây dựng), tôi sẽ không mong đợi rằng để làm việc. - Eliah Kagan


Nếu bạn không biết đường dẫn và bạn chỉ cài đặt openJDK, bạn có thể nhập update-alternatives --config java và bạn nên tìm đường đi. Để đặt biến bạn có thể viết JAVA_HOME=<PATH> theo dõi bởi export JAVA_HOME. Chú ý không có khoảng trống khi khai báo biến. Để kiểm tra xem biến có được lưu trữ hay không, bạn chỉ cần nhập echo $JAVA_HOME để xác minh.


30
2017-08-18 21:29



Điều này có vẻ như nó sẽ là tĩnh. Nếu tôi xóa openjdk-7 và cài đặt openjdk-9, thì JAVA_HOME sẽ không trỏ đến địa điểm sai? Làm thế nào nó có thể được thực hiện năng động? - DavidJ
Bằng cách bạn thay đổi nó theo cách thủ công. Một lần nữa, BẠN là cách nó trở nên năng động .... - HDave
Những gì @HDave có nghĩa là trong một số trường hợp, bạn có thể muốn JAVA_HOME trỏ đến một phiên bản java cụ thể, vì vậy việc cập nhật JAVA_HOME động có thể không phải là những gì bạn muốn. - Maciej
tôi thích câu trả lời này. Tôi đã thử nghiệm với tiếng vọng và thấy con đường của tôi. Tuy nhiên, tôi bối rối vì sao tôi vẫn nhận được JAVA_HOME biến môi trường không được thiết lập khi tôi chạy mvn -version - Winnemucca
Tôi đã viết câu trả lời này khi tôi còn ngu dốt hơn. Việc đặt biến như được mô tả sẽ chỉ ảnh hưởng đến phiên thiết bị đầu cuối hiện tại của bạn và sẽ không được duy trì. Cách chính xác là chạy update-alternatives --install <link> <name> <target> <priority>  ví dụ: update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1 - Erro