安装后在Linux哪里可以找到Java SDK?


185

我使用apt-get install安装了JDK,但不知道jdk文件夹在哪里。我需要为此设置路径。有人知道这个位置吗?


1
Linux发行版:Debian 2.6.26
dinesh707'3

尝试/usr/local/java/下载原始的Oracle发行版。
Zon

Answers:


385

这取决于您的打包系统...如果该java命令有效,则可以键入readlink -f $(which java)以查找java命令的位置。我现在在OpenSUSE系统上返回/usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java(但这不是使用的系统apt-get)。


在Ubuntu上,它看起来像是在 /usr/lib/jvm/java-6-openjdk/ OpenJDK中,在/usr/lib/jvm/Suns JDK的其他子目录中(我也认为还有其他实现)。

Debian是一样的。


对于任何给定的软件包,您都可以通过查询dpkg来确定它安装了哪些文件以及将它们安装在何处。例如,对于“ openjdk-6-jdk”软件包:dpkg -L openjdk-6-jdk


1
我在一些设置中也正在/ usr / java中查找
jlb83 2014年

如果要在android studio中添加JDK路径,请添加此/ usr / lib / jvm / java-8-oracle /
Rohit Rokde

3
看来我的道路是/usr/lib/jvm/java-7-openjdk-amd64
einverne '16

2
我认为给定的readlink最优雅(且高效),但是我建议readlink -f $(which javac) -注意“ c”,以防在同一台机器上JDK和JRE混合在一起。JDK包含一个编译器(javac),而JRE不包含。但是,如果路径不正确,则会失败,您可以尝试以下操作:find /usr/java -wholename '*ava/jdk*' -prune正如我在下面的评论中指出的那样。
轻松逗乐的史蒂文,2016年

@Winnemucca它对我有用,您可以找到java在哪里,然后可以找到jdk路径。
einverne

45
update-java-alternatives -l

会告诉您哪个Java实现是系统的默认设置,以及它在文件系统中的安装位置。有关更多选项,请查阅手册。


7
这是特定于debian的(至少)。其他发行版可能没有此功能
要求

2
@dequis,这是特定于debian的答案,因为提到apt-get了该问题,发行版为Debian 2.6.26。AFAIK,所有debian衍生产品都应该相同。
forcefsck

2
我只是为其他人指出这一点。我知道这对这个特定问题是有效的。
dequis

1
更新替代品--list | grep java在RHEL上为我工作
Upen

30
$ which java 

应该给你像

/usr/bin/java

2
真正。我敢打赌,这是在apt-get安装之后
Surrican 2011年

6
这实际上并不指向完整的JDK。1.这是一个符号链接,即使您阅读了符号链接,该二进制文件也不在JDK中。例如,如果我运行命令,readlink -f $(which javac)它将打印/usr/lib/jvm/java-8-oracle/bin/javac。该bin文件夹不是JDK。常规酸碱测试,以查看其JDK是否正在查看当前是否$JAVA_HOME包含的路径lib/tools.jar。在转换中/usr/lib/jvm/java-8-oracle/bin这是不正确的,因此它不是JDK。
僵尸

在Centos / RHL上,这是我更喜欢的JDK(如果已安装), find /usr/java -wholename '*ava/jdk*' -prune 但是其行为取决于您是在谈论OpenJDK还是Oracle Java,以及其安装方式。
轻松逗乐的史蒂文,2016年

12

该问题将被解决,但是您可以执行以下操作

which javac

要么

cd /
find . -name 'javac'

我喜欢第二个选项-如果您有多个JRE / JDK并且想全部找到它们,那么它简单实用。
Amos M. Carpenter

“ find / -name'javac'”的键入较少,但是需要管理员(root)特权,否则您将获得很多权限被拒绝的消息。
轻松逗乐的史蒂文,2016年

9

使用查找找到它。它应该在/usr某处:

find /usr -name java

运行命令时,如果太多“权限被拒绝”消息混淆了实际发现的结果,则只需将stderr重定向到/ dev / null

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

1
如果不是root用户(管理员),您将收到大量“拒绝权限”消息。
轻松逗乐的史蒂文,2016年

7

查找Java文件夹路径的另一种最佳方法是使用 alternatives在Fedora Linux中命令(我知道它适用于Ubuntu,但我只是从标题上点击了Google的这篇文章)。只想分享像我这样的人,寻找有关软呢帽风味的答案。

显示有关Java的所有信息

alternatives --display java

1
这对我有用,在Fedora上返回/ usr / java / jdk- [version]
Sina Madani

3

三步过程:首先:打开Terminal-> $ whereis java ,它将给出如下输出: java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz

第二: ls -l /usr/bin/java 它将给出如下输出: lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java

第三: ls -l /etc/alternatives/java 输出是JDK路径: lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java



1

命令:sudo update-alternatives --config java将找到所有已安装的Java版本的完整路径


1

这个问题似乎仍然很重要,答案似乎是一个移动的目标。

在我的Debian系统上(无效):

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

但是,如果您实际上去那里看,您会看到软件包系统在其中放置了多个目录和符号链接,以简化将来的维护。

实际目录是java-11-openjdk-amd64,带有另一个符号链接default-java。还有一个openjdk-11目录,但是它似乎只包含一个source.zip文件。

鉴于此,仅对于Debian,我想使用的最佳价值是 /usr/lib/jvm/default-java,因为即使您决定安装完全不同的Java版本,甚至更换供应商,它也应始终有效。

想要知道路径的正常原因是某些应用程序需要它,而您可能不希望该应用程序中断,因为您进行了更改版本号的升级。


0

在OpenSUSE 13.1 / 13.2上:/usr/lib64/jvm/java-1.6.0-openjdk-(version-number)
版本号可以是1.7.x 1.8.x等。检查您已安装的软件管理器版本...

安德烈


0

在Linux Fedora30上,可以使用完整Java JDK的多个版本,特别是软件包名称:

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

安装后,它们位于: /usr/lib/jvm

要选择完整开发JDK的位置/目录(仅与简单运行时JRE不同),请查找条目:

ls -ld java*openjdk*

这是两个不错的选择,它们是指向特定版本的链接,您必须在其中选择版本:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.