在一个新的 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)
要恢复您的/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
。)
归档时间: |
|
查看次数: |
7265 次 |
最近记录: |