踩坑记录
最近升级了selenium到版本 4.16.1, 持续集成测试,执行mvn test时遇到问题如下
java.lang.UnsupportedClassVersionError: org/openqa/selenium/WebDriver has been ***piled 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
提示信息翻译:org/openqa/selenium/WebDriver 编译环境是55.0(jdk11),而运行环境为52.0( jdk8 ),显然运行环境低于编译环境,
我使用了selenium 4.16.1 ,这个是需要jdk 11的,我的电脑中也安装了jdk11,并且脚本在IDEA中是可以顺利进行的!!!
于是乎,我就在网上各种找答案,回答频率最高的是在.xml中设置java.vesion 为11
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.***piler.encoding>UTF-8</maven.***piler.encoding>
<java.version>11</java.version>
<maven.***piler.source>11</maven.***piler.source>
<maven.***piler.target>11</maven.***piler.target>
</properties>
或者在maven的 \conf\settings.xml中设置java11
<profiles>
<profile>
<id>jdk-11</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>11</jdk>
</activation>
<properties>
<maven.***piler.source>11</maven.***piler.source>
<maven.***piler.target>11</maven.***piler.target>
<maven.***piler.***pilerVersion>11</maven.***piler.***pilerVersion>
</properties>
</profile>
</profiles>
很遗憾,都不能解决这个问题!
毫无头绪!
毫无头绪!
毫无头绪!
最终解决方案
出去溜达一圈,有了新的思路:这个问题最奇怪的点是IDEA中可以顺利运行的脚本,原因是在IDEA的Maven runner中设置了运行JRE,如下图:
但是通过maven 命令行方式运行 mvn test,并没有设置运行jre,而是使用了默认的JDK。大家都知道Maven依赖Java,需要配置JAVA_HOME。我以前的环境中jdk 使用的是1.8,安装和jdk11以后好像没有特意更改过jdk,只是在IDEA中做了相关配置!!! 于是乎,我运行了命令 mvn -v 显示:
Java version: 1.8.***
到这里,终于真像大白,修改了电脑中的JAVA_HOME,指定jdk11。重新运行 mvn test 运行测试用例,顺利执行!!!
最后的总结
当我们遇到类文件编译环境是55.0(高版本),而运行环境为52.0(低版本 )的错误时,需要考虑两点
1.解决办法很简单,升级到对应的高版本jdk即可
2.就是我遇到的问题,可能是大家在环境中有多个jdk版本,我们升级了jdk以后,并没有重新设置JAVA_HOME 所导致!
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!