Làm cách nào để đặt JAVA_HOME cho Java?


303

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

Câu trả lời:


422

Bạn có thể thiết lập của bạn JAVA_HOMEtrong /etc/profilekhi Petronilla Escarabajo gợi ý. Nhưng vị trí ưa thích cho JAVA_HOMEhoặc bất kỳ biến hệ thống là /etc/environment.

Mở /etc/environmenttrong bất kỳ trình soạn thảo văn bản nào như nanohoặc geditthêm dòng sau:

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

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

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

2
Khi tôi cố 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' dường như không có trong classpath Android Studio." Sau khi đấu tranh rất nhiều với JAVA_HOME nhưng không thành công, tôi quyết định xem qua studio.sh, shellscript khởi động Android Studio. Như một phỏng đoán hoang dã, tôi đã đặt JDK_HOME với cùng giá trị được mong đợi cho JAVA_HOME và voila! Nó được cài đặt mà không có vấn đề lớn.
Hilton Fernandes

3
Đối với những người đang phát triển phần mềm, đừng đặt JAVA_HOME của bạn vào / etc / môi trường trừ khi bạn muốn khởi động lại mỗi khi bạn chuyển đổi các phiên bản JDK.
HDave

2
Đây là một giải pháp tạm thời, như những người khác chỉ ra. Không ai muốn chạy nguồn mỗi khi họ khởi động lại bash của họ.
yuranos87

6
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 vấn đề này chỉ là thêm dòng source /etc/environmentvào đầu tập tin bash config ~/.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

2
@sedulam Tôi đã cập nhật câu trả lời
Manula Waidyanatha

79

Để đặt JAVA_HOMEbiến môi trường, hãy làm như sau:

  1. Khởi chạy Terminal bằng cách nhấn Ctrl+ Alt+ Ttrê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, bạn sẽ cần 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-oraclethư mục.
    Cuộn đến cuối tập tin và nhập như sau:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Lưu tập tin 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

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


5
Làm thế nào / etc / môi trường làm việc?
Sudip Bhandari

1
Là việc bổ sung các exportlệnh cần thiết trong /etc/environment?
pkaramol

@pkaramol Tôi đã phải thêm xuất JAVA_HOME vào ngày 16.04LTS để tải nó khi khởi động.
adeen-s

3
@ adeen-s Bạn đã thêm exportvào một dòng trong /etc/environmentvà nó đã giúp? Tệp đó chứa các định nghĩa biến được phân tích cú pháp dưới dạng =cặp giá trị tên-giới hạn; nội dung của nó không được thực thi như các lệnh. (Xem man pam_env.) Vì vậy, trừ khi bạn xử lý riêng tập tin như thể đó là tập lệnh (chẳng hạn như bằng cách chuyển /etc/environmentđến bash's ./ sourcedựng sẵn), tôi sẽ không mong đợi nó hoạt động.
Eliah Kagan

> Làm thế nào. / etc / môi trường làm việc? -. (dấu chấm) tải các lệnh từ một tập tin askubfox.com/a/232938/189965
Roman Bekkiev

37

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 javavà bạn sẽ tìm thấy đường dẫn. Để đặt biến bạn có thể viết JAVA_HOME=<PATH>theo sau export JAVA_HOME. Lưu ý không có khoảng trắng khi khai báo biến. Để kiểm tra xem biến được lưu trữ, bạn chỉ cần gõ echo $JAVA_HOMEđể xác minh.


Đ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, bạn sẽ không JAVA_HOME sau đó chỉ đến vị trí sai? Làm thế nào nó có thể được làm cho năng động?
DavidJ

3
Bằng cách bạn tự thay đổi nó. Một lần nữa, BẠN là cách nó trở nên năng động ....
HDave

Điều @HDave có nghĩa là trong một số trường hợp nhất định, bạn có thể muốn JAVA_HOME trỏ đến một phiên bản java cụ thể, do đó, việc cập nhật JAVA_HOME động có thể không phải là điều 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 vang và thấy con đường của tôi. Tuy nhiên, tôi bối rối tại sao tôi vẫn nhận được biến môi trường JAVA_HOME không được đặt khi tôi chạy mvn -version
Winnemucca

1
Tôi đã viết câu trả lời này trở lại khi tôi không biết gì hơn. Đặt biến như mô tả sẽ chỉ ảnh hưởng đến phiên 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
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.