Làm cách nào để đặt Java của Oracle làm Java mặc định trong Ubuntu?


134

Làm cách nào để thay đổi giá trị JAVA_HOMEtrong Ubuntu để trỏ đến Java của Oracle?

Nó nên chỉ đến java-6-sunhay java-6-sun-1.6.0.24?

Câu trả lời:


175

Tôi đặt dòng:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

trong ~/.bashrctập tin của tôi

/usr/lib/jvm/java7-oraclenên là một liên kết tượng trưng chỉ đến /usr/lib/jvm/java-7-oracle-[version number here].

Lý do đó là một liên kết tượng trưng là trong trường hợp có phiên bản mới của JVM, bạn không cần cập nhật .bashrctệp của mình , nó sẽ tự động trỏ đến phiên bản mới.

Nếu bạn muốn đặt JAVA_HOMEcác biến môi trường trên toàn cầu và ở cấp hệ thống, có nghĩa là sử dụng nên được đặt trong /etc/environmenttệp.


4
Hoặc /usr/lib/jvm/java-1.6.0-openjdk-amd64 nếu bạn đang sử dụng OpenJDK thay vì JDK của Oracle (Sun).
pm_labs

7
Bạn có thể sử dụng xuất JAVA_HOME = / usr / lib / jvm / default-java /
noomz

@noomz Làm thế nào để bạn có được điều đó nếu default-java không tồn tại?
AHungerArtist

@AHungerArtist Bạn nhận được điều đó nếu bạn cài đặt openjdk hoặc các gói Ubuntu được hỗ trợ chính thức khác. Thật không may, nó không được hỗ trợ cho Oracle JDK bằng cách sử dụng webupd8 / java ppa. Trên thực tế, nó hoàn toàn không rõ ràng với tôi, oracle-java7-set-defaultgói đó làm gì.
Melvyn

Nơi nào trong tập tin bạn đặt nó?
Czipperz

166

Nếu bạn muốn thay đổi nó trên toàn cầu và ở cấp hệ thống;

Trong

/etc/environment

thêm dòng này:

JAVA_HOME=/usr/lib/jvm/java-7-oracle

27
+1 Đây là cách được đề xuất trợ giúp.ubfox.com/community/EnvirVariabled
daniel kullmann

@metdos câu trả lời trên không phải trên toàn cầu hay ở cấp hệ thống?
Android Killer

1
@AndroidKiller bạn đã kiểm tra liên kết daniel kullmann đã chỉ ra chưa?
metdos

@metdos Hoạt động tốt, nhưng tham chiếu các biến không hoạt động với tôi ... $JAVA_HOMEkhông giải quyết được khi sử dụng như thế này PATH=$JAVA_HOME/bin, đã thử khởi động lại, không có hiệu lực. Tôi có phải exporthoặc set JAVA_HOMEhoặc trong tập tin này hoặc hồ sơ của tôi?
raffian

@Raffian Tôi không chắc chắn về các trường hợp góc khác nhau, theo cách này nó làm việc một cách hoàn hảo đối với tôi, để biết thêm thông tin Tôi muốn giới thiệu bạn đọc help.ubuntu.com/community/EnvironmentVariables
metdos

53

để đặt Bộ công cụ phát triển Java SE của Oracle làm Java mặc định của hệ thống, chỉ cần tải xuống Bộ công cụ phát triển Java SE mới nhất từ đây, sau đó tạo một thư mục ở đâu đó trong hệ thống tệp của bạn, ví dụ như /usr/javabây giờ giải nén các tệp bạn vừa tải xuống trong thư mục đó:

$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java

Bây giờ để đặt JAVA_HOMEbiến môi trường của bạn :

$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000

đảm bảo java của Oracle được đặt làm java mặc định bằng cách:

$ update-alternatives --config java

bạn nhận được một cái gì đó như thế này:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /opt/java/jdk1.8.0_05/bin/java                  20000     auto mode
  1            /opt/java/jdk1.8.0_05/bin/java                  20000     manual mode
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode

Press enter to keep the current choice[*], or type selection number:

chú ý đến dấu hoa thị trước các số ở bên trái và nếu không đặt đúng số, hãy chọn số chính xác bằng cách nhập số của nó và nhấn enter. Bây giờ hãy kiểm tra java của bạn:

$ java -version

Nếu bạn nhận được một cái gì đó như sau, bạn tốt để đi:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

cũng lưu ý rằng bạn có thể cần sự cho phép root hoặc thuộc nhóm sudoers để có thể làm điều này. Tôi đã thử nghiệm giải pháp này trên cả Ubuntu 12.04 và Debian wheezy và nó hoạt động ở cả hai.


1
có giải pháp này là cách sạch hơn so với giải pháp được chấp nhận.
simone cittadini

@JayminGajjar bình luận thể hiện lòng biết ơn là không cần thiết. Cơ chế hỗ trợ các câu hỏi / câu trả lời hay trong trang web này là để nâng cao chúng. Nếu bạn không có đủ danh tiếng để làm điều đó nhưng đủ nhận xét, vui lòng thử đưa một số thông tin hữu ích vào đó như trên hệ thống nào và hệ điều hành nào bạn đã kiểm tra và thấy giải pháp này hoạt động, v.v.
Barracuda

@Barracuda tôi đã bình chọn, Bạn đã đúng về thông tin, Nó hoạt động với tôi trên hệ điều hành máy chủ Ubuntu 16.10 64 Bit :)
Jaymin Gajjar

20

Nếu bạn muốn biến môi trường này có sẵn cho tất cả người dùng và trên hệ thống bắt đầu thì bạn có thể thêm phần sau vào /etc/profile.d/java.sh (tạo nó nếu cần):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

Sau đó, trong một thiết bị đầu cuối chạy:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

Câu hỏi thứ hai của tôi là - nó nên trỏ đến java-6-sun hay java-6-sun-1.6.0.24?

Nó phải luôn luôn chỉ ra java-7-oraclelà các liên kết tượng trưng đến liên kết được cài đặt mới nhất (giả sử bạn đã cài đặt Java từ kho lưu trữ Ubuntu và bây giờ từ bản tải xuống có sẵn tại oracle.com).


12

java 6

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

hoặc java 7

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64


10

Nếu bạn đang thực hiện bất kỳ loại phát triển nào, bạn cần trỏ đến JDK (Bộ công cụ phát triển Java). Mặt khác, bạn có thể trỏ đến JRE (Java Runtime Môi trường).

JDK chứa mọi thứ mà JRE có và hơn thế nữa. Nếu bạn chỉ đang thực hiện các chương trình Java, bạn có thể trỏ đến JRE hoặc JDK.

Bạn nên đặt JAVA_HOME dựa trên Java hiện tại bạn đang sử dụng. readlinksẽ in giá trị của một liên kết tượng trưng cho Java hiện tại và sedsẽ điều chỉnh nó vào thư mục JRE:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

Nếu bạn muốn thiết lập JAVA_HOME thành JDK, bạn nên truy cập thêm một thư mục:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")


5

Xem cái này ; chạy

sudo  update-java-alternatives --list

để liệt kê tất cả các cài đặt Java trên máy theo tên và thư mục, rồi chạy

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

để chọn JRE / JDK để sử dụng.

Nếu bạn muốn sử dụng các JDK / JRE khác nhau cho mỗi tác vụ Java, bạn có thể chạy các lựa chọn thay thế cập nhật để định cấu hình một java thực thi tại một thời điểm; bạn có thể chạy

sudo  update-alternatives --config java[Tab]

để xem các lệnh Java có thể được cấu hình (java, javac, javah, javaws, v.v.). Và sau đó

sudo  update-alternatives --config [javac|java|javadoc|etc.]

sẽ liên kết tác vụ / lệnh Java đó với một JDK / JRE cụ thể.

Bạn cũng có thể cần đặt JAVA_HOME cho một số ứng dụng: từ câu trả lời này, bạn có thể sử dụng

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

cho JRE, hoặc

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

cho JDK.


Một cách tiếp cận khác:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg
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.