Answers:
这取决于您的打包系统...如果该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的其他子目录中(我也认为还有其他实现)。
对于任何给定的软件包,您都可以通过查询dpkg来确定它安装了哪些文件以及将它们安装在何处。例如,对于“ openjdk-6-jdk”软件包:dpkg -L openjdk-6-jdk
/usr/lib/jvm/java-7-openjdk-amd64
。
readlink -f $(which javac)
-注意“ c”,以防在同一台机器上JDK和JRE混合在一起。JDK包含一个编译器(javac),而JRE不包含。但是,如果路径不正确,则会失败,您可以尝试以下操作:find /usr/java -wholename '*ava/jdk*' -prune
正如我在下面的评论中指出的那样。
$ which java
应该给你像
/usr/bin/java
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。
find /usr/java -wholename '*ava/jdk*' -prune
但是其行为取决于您是在谈论OpenJDK还是Oracle Java,以及其安装方式。
该问题将被解决,但是您可以执行以下操作
which javac
要么
cd /
find . -name 'javac'
使用查找找到它。它应该在/usr
某处:
find /usr -name java
运行命令时,如果太多“权限被拒绝”消息混淆了实际发现的结果,则只需将stderr重定向到/ dev / null
find /usr -name java 2> /dev/null
查找Java文件夹路径的另一种最佳方法是使用 alternatives
在Fedora Linux中命令(我知道它适用于Ubuntu,但我只是从标题上点击了Google的这篇文章)。只想分享像我这样的人,寻找有关软呢帽风味的答案。
显示有关Java的所有信息
alternatives --display java
三步过程:首先:打开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
这个问题似乎仍然很重要,答案似乎是一个移动的目标。
在我的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版本,甚至更换供应商,它也应始终有效。
想要知道路径的正常原因是某些应用程序需要它,而您可能不希望该应用程序中断,因为您进行了更改版本号的升级。
在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
这是为我工作的最好方法执行此命令:-
$(dirname $(readlink $(which javac)))/java_home