Summer Blog

openjdk8与maven surefire的一个bug

今天重装了下系统,因为之前Ubutu16升级到18采用的是自动升级,结果当然是坑爹的,动不动黑屏,一睡眠就再也醒不来。实在忍不了,再加上最近工作不是特别多,就决定重装18系统。没想到呀,重装也是坑。遇到了openJdk和maven的bug。泪目。

重现

sudo apt install openjdk-8-jdk
mv ~/Downloads/apache-maven-3.6.0-bin.tar.gz /opt/
tar xzvf apache-maven-3.6.0-bin.tar.gz
export PATH=/opt/apache-maven-3.6.0/bin:$PATH
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn package

结果

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Error: Could not find or load main class org.apache.maven.surefire.booter.ForkedBooter

解决

面向搜索引擎的编程大法:

  1. stackoverflow相同问题
  2. 一个日本小哥的解决办法

就是说这是一个openjdk的bug,也是一个maven的bug,要解决就是升级以下。

方案一:指定具体的maven-surefire-plugin版本

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <configuration>
        <useSystemClassLoader>false</useSystemClassLoader>
    </configuration>
</plugin>

方案二:使用oracle-jdk


comments powered by Disqus