Java Travis CI表示,JRE虽然只有11岁,但仍然获胜;t运行类文件版本55的JAR

Java Travis CI表示,JRE虽然只有11岁,但仍然获胜;t运行类文件版本55的JAR,java,build,continuous-integration,travis-ci,sudo,Java,Build,Continuous Integration,Travis Ci,Sudo,我有一个连接到Travis CI构建的Python应用程序。测试运行后,我需要启动应用程序,然后运行一个JAR文件来完成测试。JAR文件是用Java11编译的,属于类文件版本55。在我的构建中,我得到以下异常: Exception in thread "main" java.lang.UnsupportedClassVersionError: com/myApp/main/Main has been compiled by a more recent version of t

我有一个连接到Travis CI构建的Python应用程序。测试运行后,我需要启动应用程序,然后运行一个JAR文件来完成测试。JAR文件是用Java11编译的,属于类文件版本55。在我的构建中,我得到以下异常:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/myApp/main/Main has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
编辑:添加了异常的其余部分

为了检查Travis实例中的Java版本,我有一行
Java-version
返回以下内容:

$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
那么,为什么异常表现得像Travis实例运行的是早期版本的Java?我在本地也遇到了同样的问题,通过将JRE从Java8更改为11,我可以解决这个问题,此后再也没有出现任何问题。
java-version
命令是否不像我想象的那样告诉我JRE版本?有没有办法通过使用
.Travis.yml
文件来更改Travis实例的JRE

如有必要,以下是
.travis.yml
的相关部分:

在脚本之后:
-chmod+x~/build.sh
-chmod 777./tests/LPT/myApp.jar
-bash~/build.sh
-java-version#这方面的输出有问题
-sudojava-jar./tests/LPT/myApp.jar./tests/LPT/input.json
^最后一行触发问题中显示的异常

sudo
的默认策略通常会出于安全原因清除许多环境变量,当您构建应用程序并使用正常权限运行
java-version
检查时,您使用的是
sudojava
来实际运行它。在这两种环境中,您可能会得到不同的
路径
和/或
JAVA_HOME

您没有显示
sudojava
@chrylis谨慎优化的输出-您是在说
sudojava-jar-blah-blah
的输出吗?如果是这样的话,我更新了我的问题以包含整个输出,尽管看起来我遗漏了
错误:发生了一个JNI错误,请检查您的安装并重试
,尽管这似乎不会对情况有很大的帮助不,我的意思是您正在运行
java-version
,但是
sudojava-jar
。这些可能不会产生相同的结果。@chrylis谨慎的光学-omg dude就是这样,我所要做的不是
sudo
java-jar
调用aaaaaaahhh