我站起来了rhel VM。我很好奇 JDK 是否已安装,因此我从 shell (bash) 运行了一个命令。
whereis java
它返回:
java: /usr/bin/java
所以我导航到该路径以验证Java程序。
ls -l java
返回:
lrwxrwxrwx 1 root root 26 May 2016 10:52 java -> /usr/java/default/bin/java
到目前为止一切顺利,但是当运行java程序时:
java
-bash: java: command not found
看起来 java 有符号链接,但 /usr/java/default/bin/java 不再存在。我只是想验证是否安装了java(jdk),但从我所看到的情况来看,我不太确定。我想相信它没有安装,如果是这样,为什么系统返回 java: /usr/bin/java?
答案1
我想相信它没有安装,如果是这样,为什么系统返回 java: /usr/bin/java?
whereis
不解析符号链接。因此,如果 /usr/bin/java 仍然存在,即使符号链接目标已损坏,它仍然会返回java: /usr/bin/java
.我建议您使用type -a java
以获得正确的结果。请注意,符号链接目标或非符号链接源文件,两者都必须是可执行的(chmod +x
以设置它),否则type -a
即使文件存在,命令也将返回未找到(type
无论是否可执行,仍将返回)。
所以,我可以像下面这样简化:
whereis:即使符号链接损坏或不可执行,仍然返回。
类型:即使不可执行也返回“找到”,如果符号链接损坏则返回“未找到”。
type -a:当符号链接损坏或不可执行时返回未找到。
如果输入文件不存在,所有这些都会返回未找到。
所以,我可以建议的是重新安装 JDK,这“Oracle JDK”优于“OpenJDK”。
可以找到一篇好文章这里。
您可以执行以下操作(假设您的系统是 x64):
sudo rpm -ivh jdk-8u91-linux-x64.rpm
sudo rpm -ivh jdk-8u91-linux-x64-demos.rpm
版本号为8u91以上版本不断更新,因此您应该经常访问甲骨文网站找出最新版本。点击JDK下载按钮将转到此页它显示最新版本号及其正确的文件名。
您还可以下载文档,真正的链接可以在这里找到页,并解压它(假设你的JDK已经安装在/usr/java/jdk1.8.0_91/
):
sudo unzip jdk-8u91-docs-all.zip -d /usr/java/jdk1.8.0_91/ #optional
然后使用这两个命令选择正确的javac和java。我相信你只有一个选择(这个示例显示jdk1.8.0_74,因为我的不是最新的8u91):
$ sudo alternatives --config javac
There are 2 programs which provide 'javac'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.fc21.x86_64/bin/javac
2 /usr/java/jdk1.8.0_74/bin/javac
Enter to keep the current selection[+], or type selection number: 2
$
$ sudo alternatives --config java
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
* 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.fc21.x86_64/jre/bin/java
+ 2 /usr/java/jdk1.8.0_74/jre/bin/java
Enter to keep the current selection[+], or type selection number: 2
$
答案2
您可能必须配置替代项以指向 java,其在我的链接中进行了解释。
我注意到,尝试在 openjdk 上安装 Oracle Java 时,必须确保所有内容都正确链接并运行正确版本的 java。
如果使用 RPM 系统机器,我使用下面链接中的步骤来使其工作。
下面的 Java 命令将验证替代方案是否已正确设置。
java -version
[root@somecomputer thebtm]# java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
另一个侧面节点是,如果您已经安装了 Oracle Java 并且下载并安装了较新的 java rpm,则必须更新替代项以指向新版本的 java
[root@somecomputer thebtm]# alternatives --config java
There are 5 programs which provide 'java'.
Selection Command
-----------------------------------------------
* 1 /usr/java/jdk1.8.0_66/bin/java
2 /usr/java/jdk1.8.0_66/jre/bin/java
3 /usr/java/jre1.8.0_77/bin/java
4 /usr/java/jdk1.8.0_77/jre/bin/java
+ 5 /usr/java/jre1.8.0_91/bin/java
Enter to keep the current selection[+], or type selection number: 5
[root@somecomputer thebtm]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)