Cách toàn hệ thống để đặt hoặc nhận $ JAVA_HOME trong Ubuntu?


8

Tôi tự hỏi liệu Ubuntu có cung cấp một cách toàn hệ thống để tìm hiện tại JAVA_HOMEhay liệu có đúng nơi để cài đặt hay không JAVA_HOME.

Mac OS X làm tốt điều này, vì /usr/libexec/java_homelệnh trả về dòng điện JAVA_HOME. Nhưng với Ubuntu, các tài liệu tôi tìm thấy luôn bảo tôi đặt $JAVA_PATHđiểm vào một đường dẫn tĩnh, được lưu trữ trong đó ~/.bash_profile.

Tôi nghĩ, tuy nhiên, cách tiếp cận này có một số nhược điểm:

  1. Khi Java cập nhật, số phiên bản mini sẽ thay đổi, điều này làm cho đường dẫn tĩnh không còn nữa.
  2. Sau khi thay đổi JRE được sử dụng trong hệ thống của tôi với update-alternatives, tôi phải thay đổi $JAVA_HOMEtrong .bash_profile. Công việc làm thêm đó thật khó chịu.
  3. Một số $JAVA_HOMEchương trình yêu cầu, hoàn toàn không biết .bash_profile. Tôi phải thiết lập $JAVA_HOMEkịch bản khởi nghiệp của họ, do đó, một cách dễ dàng và tiêu chuẩn để có $JAVA_HOMEvẻ rất quan trọng đối với tôi.

Vâng, bất kỳ lời khuyên được hoan nghênh. Cảm ơn.

Câu trả lời:


6

Một chút hack, nhưng đặt dòng này trong của bạn /etc/profileđể thiết lập nó trên toàn hệ thống:

export JAVA_HOME=$(dirname $(dirname $(readlink -e /usr/bin/javac)))

Một số sysadins thích nghịch ngợm với PATH nên / usr / bin không nhất thiết phải là nơi đầu tiên được tìm. Để chắc chắn rằng bạn đang chọn đường dẫn của phiên bản bạn sẽ thực sự chạy, một bản hack lại tốt hơn có thể là: export JAVA_HOME=$(dirname $(dirname $(readlink -e $(which javac))))
SimonB

Điều này hoạt động nếu đường dẫn tồn tại. Có cách nào để làm cho nó im lặng trên các hệ thống không có java không?
chào mừng

Làm thế nào để làm điều này trong Mac? "readlink -e" không hoạt động.
Artanis Zeratul

1

Bạn có thể đặt các biến môi trường trong /etc/environmentđó, được thiết lập bởi PAM. Cũng cần có các liên kết trong /usr/lib/jvmđó không thay đổi với các bản phát hành nhỏ.

JAVA_HOME=/usr/lib/jvm/java-6-sun

0

Đặt hồ sơ hệ thống đường dẫn

Chỉnh sửa tập tin đường dẫn hệ thống / etc / profile

sudo gedit /etc/profile

Thêm dòng sau vào cuối

JAVA_HOME=/usr/lib/jvm/jdk1.7.0
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH

Đối với http://javaandme.com/ để có hướng dẫn cài đặt đầy đủ.


0

Nếu bạn chắc chắn lệnh 'java' có thể được gọi, liệu nó có hiệu quả với bạn không?

export JAVA_HOME=$(dirname $(java -XshowSettings:properties -version 2>&1 | grep 'java\.home' | awk '{ print $3 }'))

OP đang tìm cách thiết lập toàn $JAVA_HOMEhệ thống, không chỉ trong vỏ hiện tại.
Celada 24/2/2015

0

Giải pháp được chấp nhận bởiuser13742 giả định rằng máy chủ chắc chắn đã cài đặt Java. Trong trường hợp bạn thêm phần này vào tập lệnh tập trung cho nhiều máy chủ, nó sẽ đưa ra một số lỗi như:

dirname: missing operand
Try 'dirname --help' for more information.

Để tránh điều đó và chỉ đặt JAVA_HOME nếu máy chủ có môi trường Java, một cải tiến nhỏ là:

if [ -f "$(which javac)" ]; then
    export JAVA_HOME=$(dirname $(dirname $(readlink -e $(which javac))))
fi

Tôi cũng kết hợp thay đổi từ SimonB để sử dụng whichđể tìm nơi cài đặt.


Tôi có thể đặt cái này vào /etc/environmentkhông?
Jin Kwon
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.