Nhiều môi trường Java trên cùng một máy Linux


9

Cách hiệu quả nhất để cài đặt nhiều phiên bản Java JDK đồng thời trên cùng một máy Linux là gì?

Tôi cần Java5 trong khi Ubuntu 9.10 Karmic hiện tại của tôi được tải với Java6.

Tôi biết tôi có thể thiết lập một VM cho việc này nhưng tôi đang tìm giải pháp thay thế.

Câu trả lời:


5

Nếu bạn tải xuống tệp nhị phân linux từ Sun, bạn có thể cài đặt nó trong bất kỳ thư mục nào bạn thích. Sau đó, chỉ cần tham khảo các lib đó trong mã của bạn, và bạn tốt để đi.

Với trình cài đặt nhị phân, nó sẽ tạo thư mục con có tên riêng (ví dụ: trong ví dụ của bạn, /usr/java/jdk1.5.0_), vì vậy bạn có thể tải xuống bao nhiêu tùy thích và chúng sẽ tự xếp hàng theo tên thích hợp tiểu khu.

Nhị phân java chính tồn tại trong / usr / bin, vì vậy nếu bạn muốn thay thế nó đến điểm khi bạn gõ "java", nó sẽ truy cập java của bạn chứ không phải cái đó, bạn chỉ cần di chuyển cái cũ ra khỏi / usr / bin và liên kết cái mới của bạn trong đó. Nhập which javasẽ cho bạn biết java mặc định trên hệ thống của bạn là gì.

@jldupont: Khi tôi nghĩ về cài đặt đồng thời, tôi nghĩ đến nhiều phiên bản được cài đặt trên cùng một máy, phương pháp của tôi sẽ hoàn toàn mang lại cho bạn. Tôi có khoảng 12 phiên bản java được cài đặt trên hộp sản xuất của mình để xử lý các lỗi liên quan từ công ty chưa được cập nhật.

Tuy nhiên, khi bạn nhập "java", bạn sẽ chỉ nhận được một phiên bản java, vì đó là những gì trong '/usr/bin'... Bạn phải nhập một cái gì đó như' /usr/java/jdk1.5.1/ bin / java 'để có được một nhị phân java cụ thể không phải là mặc định của hệ thống.


Cảm ơn nhưng tôi cần cài đặt đồng thời . Làm thế nào để làm điều đó?
jldupont

cảm ơn. Bây giờ tôi đã cài đặt JDK5 trong / opt và tự viết một tập lệnh bash để thiết lập các biến môi trường ... có vẻ như nó hoạt động. Tôi nghĩ rằng nó sẽ đau đớn hơn thế này!
jldupont

@jldupont: Thật ra đó là một trong những điều tôi yêu thích về linux ... Vì không có cách nào để đăng ký, bạn có thể cài đặt điều tương tự hàng trăm lần, và đó không phải là vấn đề miễn là bạn chắc chắn để không ghi đè lên các tập tin phổ biến. Tôi biết rất nhiều người chạy (ví dụ) nhiều phiên bản khác nhau của Apache. Bản thân tôi có xu hướng chạy nhiều phiên bản của Perl và Java.
Satanicpuppy

1

Chỉ cần tải xuống và thực thi tệp .bin từ oracle sau đó trích xuất chính nó vào một thư mục. Di chuyển thư mục này (ví dụ jdk1.6.0_32) vào / usr / lib / jvm và sau đó tập lệnh setjavatôi sử dụng để thay đổi phiên bản java. exportTuy nhiên, do các câu lệnh bạn cần ở trong cùng một thiết bị đầu cuối. Ngoài ra một số công cụ jvm nhỏ có thể không được thiết lập nhưng tôi đoán nó sẽ hoạt động trong hầu hết các trường hợp. Ngoài ra tôi là một noob shell nên xin vui lòng sửa cho tôi nếu có khả năng tốt hơn :-) Mã cho tôi là:

#!/bin/bash
# shouldnt be used in a loop, else the path may become too long

if [[ $(/usr/bin/id -u) -ne 0 ]]; then
    echo "Not running as root"
    exit
fi

case "$1" in
  6)
    echo "Setting Java version 6"
    export PATH=/usr/lib/jvm/jdk1.6.0_32/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_32
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javaws /usr/bin/javaws
    javac -version    
    java -version
    ;;
  7)
    echo "Setting Java version 7"
    export PATH=/usr/lib/jvm/java-7-openjdk/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk/
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javaws /usr/bin/javaws
    javac -version
    java -version
    ;;
  *)
    echo "Usage: $0 {6|7}"

esac
exit 0

Hoffner Không chắc chắn làm thế nào các báo cáo xuất khẩu sẽ hoạt động. Họ không làm việc khi tôi cố gắng.
SureshS
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.