我正试图在服务器上执行一个jar,如下所示:java -jar file.jar
但我得到以下错误:
A JNI error has occurred, please check your installation and try again
...
Class has been compiled by a more recent version of the Java Environment (class file version 55.0),
this version of the Java Runtime only recognizes class file versions up to 52.0.
我知道这似乎与我的jar文件使用Java 11有关,而服务器只安装了Java 8。我不能像人们在处理这个问题的其他帖子中建议的那样安装Java11,因为我在一个我不是超级用户的服务器上执行。我还想避免用Java8重新编程我的整个项目。
有没有办法让我执行我的jar文件?
如果您可以访问file.jar
的源代码,您可以尝试从中创建一个用于java8的jar。如果失败,则使用一些较新的功能。你可以浏览代码并手动降级。
另一种选择是在本地安装java(不需要超级用户权限(。
如前所述,存在多个解决方案。我发现最简单的是以下两种解决方案:
- 要求服务器的超级用户安装Java 11
- 从下载
jdk-11.0.11_linux-x64_bin.tar.gz
https://www.oracle.com/java/technologies/javase-jdk11-downloads.html,可以用scp jdk-11.0.11_linux-x64_bin.tar.gz serverName:.
复制到服务器上用服务器上的tar xvzf jdk-11.0.11_linux-x64_bin.tar.gz
解包,然后用jdk-11.0.11_linux-x64_bin.bin.java -jar file.jar
执行您的jar文件
我最终要求超级用户安装Java 11,他们告诉我它已经安装在someFolder/java11/bin/java
上了,所以我最终使用了someFolder/java11/bin/java -jar file.jar