Sự khác biệt giữa JAVA_HOME và các lựa chọn thay thế cập nhật là gì?


12

Tôi đã cố gắng tìm ra cách tốt nhất để chạy OpenJDK Java Runtime làm Java mặc định cho hộp Fedora của tôi và sử dụng Oracle JDK 6 để phát triển Android, cụ thể là chạy Android SDK Manager, Android Studio và Eclipse từ Android Bundle.

Tôi đã cài đặt OpenJDK Java Runtime từ kho Fedora có cài đặt thay thế như sau.

[donnie@fedora ~]$ alternatives --list | grep java
jre_openjdk             auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
jre_1.7.0               auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
java                    auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre/bin/java
libjavaplugin.so.x86_64 auto    /usr/lib64/IcedTeaPlugin.so

Tôi đã cài đặt Oracle JDK 6 bằng cách sử dụng vòng / phút do Oracle cung cấp.

Tôi có thể làm cho Android Bundle và Studio sử dụng JAVA_HOME để chạy theo Oracle JDK bằng cách theo dõi .bashrc.

export JAVA_HOME=/usr/java/jdk1.6.0_45/
export PATH=$JAVA_HOME/bin:$PATH

Tôi nhận thấy rằng Chrome vẫn sử dụng OpenJDK (vì tôi vẫn cần liên kết plugin).

Sự khác biệt giữa JAVA_HOME và sử dụng các lựa chọn thay thế là gì?

Câu trả lời:


11

Lựa chọn thay thế

Các lựa chọn thay thế là một công cụ sẽ quản lý các vị trí của phần mềm được cài đặt bằng các liên kết dưới sự kiểm soát của alternativescông cụ.

Các liên kết này cuối cùng được quản lý theo /etc/alternativescác liên kết trung gian được tạo trong một thư mục trong $PATH, điển hình /usr/bin.

Thí dụ

$ ls -l /usr/bin/java
lrwxrwxrwx. 1 root root 22 Feb 24 17:36 /usr/bin/java -> /etc/alternatives/java

$ ls -l /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 Feb 24 17:36 /etc/alternatives/java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.0.fc19.x86_64/jre/bin/java

$ JAVA_HOME

$JAVA_HOMElà nơi phần mềm có thể được yêu cầu xem qua việc sử dụng biến môi trường. Thêm nó vào $PATHchỉ đơn giản là thêm các thực thi có trong $JAVA_HOME/bincủa bạn $PATH. Điều này đôi khi cần thiết cho các ứng dụng nhất định.

Hai cơ chế có liên quan nhưng có thể được sử dụng cùng nhau hoặc độc lập với nhau, nó thực sự phụ thuộc vào ứng dụng Java mà cơ chế nào thích hợp hơn.

Những gì tôi làm

Tôi thường sử dụng $JAVA_HOMEcho một số ứng dụng GUI, nhưng nói chung chỉ sử dụng nó cho các cài đặt máy chủ sử dụng Jetty, Tomcat hoặc JBOSS chẳng hạn.

Đối với các cài đặt này, tôi vẫn sẽ sử dụng alternativesđể quản lý các cài đặt Java trước khi cài đặt $JAVA_HOME. Tôi thích làm theo cách này trong trường hợp tôi có thể cần phải cài đặt nhiều Java.

Các lựa chọn thay thế không cho phép bạn có một số công cụ nhất định sử dụng một cài đặt Java trong khi các công cụ khác sử dụng một công cụ hoàn toàn khác.

Người giới thiệu


Giveaway là với các lựa chọn thay thế tôi có thể sử dụng các thành phần khác nhau của Java. Ví dụ, thay thế có thể thiết lập javajavactừ JDK khác nhau, mặt khác JAVA_HOME=JAVALOCATIONsẽ chỉ java, javacjavawsđến java, javacjavawstrong JAVALOCATION, tương ứng.
Sudhir Khanger

Lý do tôi hỏi câu hỏi này là làm thế nào tôi có thể sử dụng OpenJDK làm Java Runtime mặc định và làm cho Android Studio, Eclipse và SDK Manager sử dụng Oracle JDK. Tôi có thể chạy ba chương trình đó trong Oracle JDK bằng cách chỉnh sửa các tập lệnh khởi động của chúng có thể bị hỏng nếu chúng được cập nhật. Tôi đang tìm kiếm một cái gì đó chung chung hơn STUDIO_JDK, mà tôi có thể thêm vào ~/.profilehoặc ~/.bashrc, được Android Studio sử dụng để chọn JDK nhưng tôi nghĩ Android Bundle (Trình quản lý SDK và SDK) sẽ không tôn trọng điều đó.
Sudhir Khanger

@donniezazen - yeah STUDIO_JDKlà một điều tùy chỉnh. Tôi sẽ sử dụng các lựa chọn thay thế cho các công cụ đó và đặt JAVA_HOMEtheo đường dẫn /usr/binđược quản lý theo alternatives. Khi nâng cấp được thực hiện, thay đổi alternativeslà tất cả những gì cần thiết.
slm

Tôi không chắc chắn những gì bạn đang đề xuất. Chỉ cả hai alternativesJAVA_HOMEđể nói /usr/bin/java. Ngoài ra nó có vẻ như JAVA_HOMEghi đè alternatives.
Sudhir Khanger

@donniezazen - có, sử dụng các lựa chọn thay thế để quản lý cài đặt JAVA của bạn và sau đó sử dụng JAVA_HOME, trỏ nó tới /usr/bin. Bạn đúng, JAVA_HOMEcó thể hoạt động độc lập từ alternatives.
slm
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.