不支持 1.8 版

Posted

技术标签:

【中文标题】不支持 1.8 版【英文标题】:release version 1.8 not supported 【发布时间】:2019-02-24 10:08:19 【问题描述】:

我有一个使用 Java 8 的项目。

到目前为止,我们在 pom 中将源和目标版本指定为 1.8:

<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>

我们想利用 Java 9+ 的“-release”选项并添加以下内容:

<maven.compiler.release>1.8</maven.compiler.release>

但是现在我们得到以下错误:

Fatal error compiling: release version 1.8 not supported

我们正在使用 maven 3.5.3、3.8.0 版中的 maven-compiler-plugin 和 Java 10 来编译项目。

这里有什么问题?

【问题讨论】:

为什么要使用不同的版本进行编译?我的意思是Java 10 用maven 编译项目和Java 1.8?使用相同的版本 @Adya 该项目可与 Java 1.8 编译,因此这是 pom.xml 中的要求。但当然它也需要与 Java 10 一起编译。没有理由用 Java 1.8 编译这个项目 【参考方案1】:

这应该可行

<maven.compiler.release>8</maven.compiler.release>

因为&lt;release&gt; 属性仅适用于主要版本的发行版。

顺便说一句,这是假设这是实际编译器插件配置中使用的参数,有点像:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <release>$maven.compiler.release</release>
    </configuration>
</plugin>

【讨论】:

是的,你是对的! sourcetarget 允许 1.8 和 8 有点不一致,但 release only 允许 8... 关于您提到的 maven-compiler-plugin 配置:是的,但是是间接的。上述属性仅指定为属性。我们没有在 maven-compiler-plugin 的配置块中明确提及这些属性,因为这些属性是自动读取的,不需要像您的示例中那样显式声明。 @radlan 同意,按照目前的惯例。它在声明为属性时也应该起作用。 @radlan 这种不一致是基于 JDK9+ 已将版本更改为 9.X,而 JKD8 及之前称为1.X...此外,--release .. 仅从 JDK9+ 开始存在,但不存在之前... 我宁愿指出规范而不是复制它。规格应该保持最新,所有基于它的内容可能都不是。但我们可以接受任何 PR :)【参考方案2】:

就我而言,我必须更改版本、来源和目标。

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.release>8</maven.compiler.release>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
  </properties>

【讨论】:

以上是关于不支持 1.8 版的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 3.3 版不支持 BuildActionExecuter 上的 forTask() 方法

jvm 1.7 版不适合这个产品。窗口中的 eclipse nano 需要更高版本 1.8

IDEA 社区版不支持 Tomcat?一招完美解决!

为啥说稳定版不支持ROOT权限,怎样解决。谢谢。

vs2015社区版不支持installshield

windows家庭版平台不支持虚拟化的原因?