Làm thế nào để thay thế OpenJDK 6 bằng OpenJDK 7?


33

Đáng ngạc nhiên (vì OpenJDK 7 đã được phát hành cho tính khả dụng chung khoảng 4 tháng trước) Ubuntu 11.10 vẫn sử dụng OpenJDK 6 thay vì 7 theo mặc định. Làm thế nào để tôi khắc phục tốt nhất điều này? Tôi muốn loại bỏ hoàn toàn OpenJDK 6 và để OpenJDK 7 trở thành default-jdk và default-jre.

Tôi không muốn tarball chính thức của Oracle, tôi muốn deb repos - cách Ubuntu tiêu chuẩn.


Ai đó sẽ phải xây dựng nó thành gói Debian và đặt nó vào PPA trên Launchpad. Nếu chưa có ai làm điều đó, bạn có thể tạo .deb hoặc cài đặt tar.
Martin Uting

Vẫn là trường hợp với 12.04
Thorbjørn Ravn Andersen

Năm 2011 - Bây giờ là Năm 2012 - điều này đã được giải quyết thực sự chưa (câu hỏi lolnào được coi là câu trả lời ? Nếu không phải i gonna write a nice wiki on thistrong câu hỏi / câu trả lời của tôi.

Sẽ tốt hơn nếu nâng cấp hệ thống của bạn lên LTS.
Ketan Patel

Câu trả lời:


28

Vấn đề là default-jregói phụ thuộc vào OpenJDK 6 và hầu hết các gói khác có phụ thuộc được xác định là default-jre | openjdk-6-jre | sun-java6-jre- vì vậy cho đến khi OpenJDK 7 được hỗ trợ chính thức và sẽ được sử dụng làm phiên bản mặc định hoặc cho đến khi tất cả các gói phụ thuộc Java cập nhật phụ thuộc của chúng, bạn sẽ phải giữ OpenJDK 6 và đặt OpenJDK 7 làm mặc định bằng cách sử dụng update-java-alternatives. Ví dụ cho hệ thống 64 bit:

$ update-java-alternatives -l
java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64
$ sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

Trên hệ thống 32 bit, tên thư mục sẽ khác nhau, bạn có thể tìm đúng tên bằng cách sử dụng công -ltắc. Lệnh thứ hai có thể nhổ rất nhiều lỗi; hoặc sử dụng --jrechuyển đổi hoặc chỉ bỏ qua lỗi - tập lệnh thay đổi những gì có thể và chỉ bỏ qua phần còn lại.

Về mặt lý thuyết, người ta có thể chỉnh sửa default-jregói phụ thuộc vào OpenJDK 7, nhưng được cảnh báo rằng điều này có thể gây hại nhiều hơn là có lợi.


2
Để làm việc này chính xác, tôi phải đảm bảo rằng đối với mỗi gói openjdk-6 hoặc icedtea-6, có một gói openjdk-7 hoặc icetea-7 tương ứng, nếu không các thay thế cập nhật-java sẽ không thực hiện chuyển đổi.
Blair Zajac 17/03/2016

2
Sau khi cài đặt icedtea-7-plugin ( $ sudo apt-get install icedtea-7-plugin), nó hoạt động tốt trên Ubuntu 12.04. Cảm ơn.
David

10

Đối với điều này, bạn phải cài đặt cả hai phiên bản jdk trên hệ thống của mình. bạn có thể sử dụng apt-get để tải xuống cả hai.

Sau đó thử

$ sudo update-alternatives --config java

và chọn jdk bạn muốn sử dụng.

Openjdk đôi khi không thuận lợi, đối với một số ứng dụng.

Bạn cũng nên thử dùng oracle-java hoặc sun-java.

Liên kết dưới đây rất hữu ích cho mục đích này:

http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubfox-via.html


3

OpenJDK 7 có trong repos ub Ubuntu bình thường vào 11.10, nếu bạn tìm openjdk-7-jre và openjdk-7-jdk và cài đặt chúng bằng apt-get / synaptic / phần mềm trung tâm, họ nên thay thế openjdk-6, nếu không trước tiên bạn có thể xóa các gói openjdk-6- * apt-get purge openjdk-6-*


1
Các gói openjdk-7- * dường như được cài đặt song song với openjdk-6- . Và nếu tôi cố gắng loại bỏ openjdk-6- , có hàng tấn gói bị loại bỏ tùy thuộc (mặc dù thực tế tôi biết một số ứng dụng đó hoạt động hoàn hảo với Java 7).
Ivan

rõ ràng default-jrevẫn chỉ đến Java 6.
Thorbjørn Ravn Andersen

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.