Tôi có thể tìm SDK Java trong Linux sau khi cài đặt nó ở đâu?


185

Tôi đã cài đặt JDK bằng cách sử dụng apt-get install nhưng tôi không biết thư mục jdk của mình ở đâu. Tôi cần thiết lập đường dẫn cho điều đó. Có ai có một đầu mối về vị trí?


1
Phân phối Linux: Debian 2.6.26
dinesh707

Hãy thử /usr/local/java/các bản phân phối Oracle đã tải xuống ban đầu.
Zon

Câu trả lời:


385

Điều này phụ thuộc một chút từ hệ thống gói của bạn ... nếu javalệnh hoạt động, bạn có thể nhập readlink -f $(which java)để tìm vị trí của lệnh java. Trên hệ thống OpenSUSE, hiện tại tôi trả về /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java(nhưng đây không phải là hệ thống sử dụng apt-get).


Trên Ubuntu, có vẻ như nó /usr/lib/jvm/java-6-openjdk/ dành cho OpenJDK và trong một số thư mục con khác của /usr/lib/jvm/Suns JDK (và các triển khai khác cũng vậy, tôi nghĩ vậy).

Debian cũng vậy.


Đối với bất kỳ gói nào, bạn có thể xác định tệp nào sẽ cài đặt và nơi cài đặt chúng bằng cách truy vấn dpkg. Ví dụ cho gói 'openjdk-6-jdk':dpkg -L openjdk-6-jdk


1
chỉnh sửa tìm trong / usr / java quá trên một số thiết lập tôi đã thấy
jlb83

Nếu bạn muốn thêm đường dẫn JDK trong studio android, hãy thêm / usr / lib / jvm / java-8-oracle /
Rohit Rokde

3
Dường như con đường của tôi là /usr/lib/jvm/java-7-openjdk-amd64.
einverne

2
Tôi nghĩ rằng đường dẫn được đưa ra là thanh lịch nhất (và hiệu quả), nhưng tôi đề nghị readlink -f $(which javac) - lưu ý 'c' trong trường hợp có sự pha trộn kỳ lạ của JDK và JRE trên cùng một máy. JDK bao gồm một trình biên dịch (javac) và JRE thì không. Tuy nhiên, nếu đường dẫn không chính xác, nó sẽ thất bại và bạn có thể thử điều này: find /usr/java -wholename '*ava/jdk*' -prunenhư tôi lưu ý trong một bình luận dưới đây.
Steven dễ dàng thích thú

@Winnemucca Nó hoạt động với tôi, bạn có thể tìm thấy java ở đâu và sau đó bạn có thể tìm thấy đường dẫn jdk.
einverne

45
update-java-alternatives -l

sẽ cho bạn biết cách triển khai java nào là mặc định cho hệ thống của bạn và nơi cài đặt hệ thống tập tin. Kiểm tra hướng dẫn để có thêm tùy chọn.


7
Đây là cụ thể của debian (ít nhất). Các phân phối khác có thể không có điều này
dequis

2
@dequis, đó là một câu trả lời cụ thể cho debian, vì câu hỏi được đề cập apt-getvà bản phân phối Debian 2.6.26. AFAIK, nó phải giống nhau cho tất cả các dẫn xuất debian.
Forcefsck

2
Tôi chỉ chỉ ra cho người khác. Tôi biết nó hợp lệ cho câu hỏi cụ thể này.
dequis

1
cập nhật thay thế --list | grep java đã làm việc cho tôi trên RHEL
Upen

30
$ which java 

sẽ cung cấp cho bạn một cái gì đó như

/usr/bin/java

2
thật. Tôi cá là sau khi cài đặt apt-get
The Surrican

6
Điều này không thực sự chỉ ra một JDK đầy đủ. 1. Đây là một liên kết tượng trưng và ngay cả khi bạn đọc liên kết tượng trưng, ​​nhị phân cũng không nằm trong JDK. Ví dụ, nếu tôi chạy lệnh readlink -f $(which javac)nó sẽ in /usr/lib/jvm/java-8-oracle/bin/javac. Thư mục bin đó KHÔNG phải là JDK. Thử nghiệm axit-bazơ tổng quát để xem liệu JDK của nó có để xem dòng điện $JAVA_HOMEcó chứa đường dẫn không lib/tools.jar. Trong /usr/lib/jvm/java-8-oracle/binđó, điều đó không đúng, do đó nó không phải là JDK.
Zombie

Trên Centos / RHL Đây là những gì tôi thích tìm JDK (nếu được cài đặt) find /usr/java -wholename '*ava/jdk*' -prune Nhưng hành vi phụ thuộc vào việc bạn đang nói về OpenJDK hay Oracle Java và cách nó được cài đặt ở vị trí đầu tiên.
Steven dễ dàng thích thú

12

Câu hỏi này sẽ được di chuyển nhưng bạn có thể làm như sau

which javac

hoặc là

cd /
find . -name 'javac'

Tôi thích tùy chọn thứ hai - đơn giản và hữu ích nếu bạn có nhiều JRE / JDK và muốn tìm tất cả.
Amos M. Carpenter

"find / -name 'javac'" ít gõ hơn, nhưng yêu cầu đặc quyền của quản trị viên (root) hoặc bạn sẽ nhận được rất nhiều quyền từ chối tin nhắn.
Steven dễ dàng thích thú

9

Sử dụng tìm để định vị nó. Nó nên /usrở dưới một nơi nào đó:

find /usr -name java

Khi chạy lệnh, nếu có quá nhiều thông báo "Quyền bị từ chối" làm mờ kết quả tìm thấy thực tế thì chỉ cần chuyển hướng stderr sang / dev / null

find /usr -name java 2> /dev/null

1
Nếu không root (quản trị viên), bạn sẽ nhận được rất nhiều tin nhắn từ chối cấp phép.
Steven dễ dàng thích thú

7

Một cách tốt nhất khác để tìm đường dẫn thư mục Java là sử dụng alternativeslệnh trong Fedora Linux (Tôi biết nó dành cho Ubuntu nhưng tôi đã đăng bài này từ google chỉ bằng tiêu đề của nó). Chỉ muốn chia sẻ những người như tôi đang tìm kiếm câu trả lời cho hương vị fedora.

Để hiển thị tất cả thông tin liên quan đến java

alternatives --display java

1
Điều này làm việc cho tôi, trở lại / usr / java / jdk- [phiên bản] trên Fedora
Sina Madani

3

Quá trình ba bước: Đầu tiên: mở Terminal-> $ whereis java nó sẽ cho đầu ra như thế này: java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz

Thứ hai: ls -l /usr/bin/java Nó sẽ cho đầu ra như thế này: lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java

Thứ ba: ls -l /etc/alternatives/java đầu ra là đường dẫn JDK: lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java



1

lệnh: sudo update-alternatives --config javasẽ tìm đường dẫn đầy đủ của tất cả các phiên bản Java đã cài đặt


1

Câu hỏi này vẫn có vẻ phù hợp, và câu trả lời dường như là một mục tiêu di động.

Trên hệ thống debian của tôi (buster):

> update-java-alternatives -l
java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64

Tuy nhiên, nếu bạn thực sự đi đến đó, bạn sẽ thấy có nhiều thư mục và các liên kết tượng trưng được đặt ở đó bởi hệ thống gói để đơn giản hóa việc bảo trì trong tương lai.

Các thư mục thực tế là java-11-openjdk-amd64, với một liên kết tượng trưng khác default-java. Ngoài ra còn có một openjdk-11thư mục, nhưng dường như chỉ chứa một tệp source.zip.

Với điều này, đối với Debian CHỈ, tôi đoán giá trị tốt nhất để sử dụng là /usr/lib/jvm/default-java, vì điều này sẽ luôn hợp lệ, ngay cả khi bạn quyết định cài đặt một phiên bản java hoàn toàn khác, hoặc thậm chí là các nhà cung cấp chuyển đổi.

Lý do bình thường để biết đường dẫn là vì một số ứng dụng muốn nó và có lẽ bạn không muốn ứng dụng đó bị hỏng vì bạn đã nâng cấp thay đổi số phiên bản.


0

trên OpenSUSE 13.1 / 13.2, số /usr/lib64/jvm/java-1.6.0-openjdk-(version-number)
phiên bản có thể là 1.7.x 1.8.x, v.v. kiểm tra phiên bản phù thủy của trình quản lý phần mềm bạn đã cài đặt ...

André


0

Trên Linux Fedora30, có sẵn một số phiên bản của JDK java đầy đủ, cụ thể là các tên gói:

java-1.8.0-openjdk-devel.x86_64 
java-11-openjdk-devel.x86_64

Sau khi cài đặt, chúng được tìm thấy trong: /usr/lib/jvm

Để chọn vị trí / thư mục của JDK phát triển đầy đủ (khác với thời gian chạy đơn giản hơn chỉ JRE), hãy tìm các mục:

ls -ld java*openjdk*

Dưới đây là hai lựa chọn tốt, đó là các liên kết đến các phiên bản cụ thể, nơi bạn sẽ phải chọn phiên bản:

/usr/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-11-openjdk

0

Đây là cách tốt nhất giúp tôi thực hiện Lệnh này: -

$(dirname $(readlink $(which javac)))/java_home
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.