Debian 8 -bash: /usr/bin/java: 没有那个文件或目录

use*_*856 1 debian java

在一个新的 Debian 系统上我安装了 JRE 使用

sudo apt-get install default-jre
Run Code Online (Sandbox Code Playgroud)

然后我下载了一个 jar 文件并尝试运行它:

java -jar server.jar
Run Code Online (Sandbox Code Playgroud)

该文件抛出异常:

java.lang.unsupportedclassversionerror unsupported major.minor version 52.0

所以我开始寻找解决方案并按照用户的说明进行操作:

sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin
Run Code Online (Sandbox Code Playgroud)

后来我意识到我什至没有目录/Library,因此这个链接没有指向任何地方。

现在我什至不能再运行java了:

java -jar server.jar
-bash: /usr/bin/java: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我已经尝试卸载 JRE 并重新安装它:

apt-get remove default-jre
apt-get update
apt-get install default-jre
Run Code Online (Sandbox Code Playgroud)

但这并没有改变任何东西。

Java似乎已安装:

    find /usr -name java
/usr/share/bash-completion/completions/java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-7-openjdk-amd64/bin/java
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 5

要恢复您的/usr/bin/java链接,您应该运行

sudo update-java-alternatives -a
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Debian 9(如最初所述),您不应该遇到这些问题,因为 OpenJDK 8 是那里的默认设置,而 OpenJDK 7 甚至不可用。要修复问题以便您可以运行版本 52 类(Java 8 类),请安装 OpenJDK 8:

sudo apt install openjdk-8-jre
Run Code Online (Sandbox Code Playgroud)

在 Debian 8 上,您可以从 backports 安装 OpenJDK 8:

echo deb http://archive.debian.org/debian jessie-backports main | sudo tee /etc/apt/sources.list.d/jessie-backports.list
echo 'Acquire::Check-Valid-Until "false";' | sudo tee -a /etc/apt/apt.conf
sudo apt update
sudo apt -t jessie-backports install openjdk-8-jre
Run Code Online (Sandbox Code Playgroud)

(有关详细信息,请参阅无法获取 jessie backports 存储库。)

然后,您需要专门选择 OpenJDK 8 作为默认值:

sudo update-java-alternatives -s java-1.8.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

(要查看可能的值,请运行/usr/sbin/update-java-alternatives -l。)