Maven Java编译器 - 使用错误的合规性版本的编译错误

时间:2017-07-13 23:18:11

标签: java maven compiler-errors

从Eclipse运行安装时,我们没有问题,因为编译器版本设置为1.8。

在终端中运行mvn install时,我们收到以下错误。

 ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project servicehelper: Compilation failure
    [ERROR]   try-with-resources is not supported in -source 1.5
    [ERROR]   (use -source 7 or higher to enable try-with-resources)
    [ERROR]

当使用mvn install -X时,我们看到-target 1.5

然而,这是我的java和javac版本

mvn -version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T14:39:06-05:00)
Maven home: /usr/local/Cellar/maven/3.5.0/libexec
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.12.5", arch: "x86_64", family: "mac"

java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

javac -version
javac 1.8.0_131

我似乎从我运行的每个版本开始,我们应该有1.8合规性,但maven目标继续尝试以1.5合规性安装。

3 个答案:

答案 0 :(得分:2)

将此插件添加到您的pom.xml文件中。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.1</version>
    <configuration>
      <compilerVersion>1.8</compilerVersion>
    </configuration>
  </plugin>

答案 1 :(得分:1)

首先要定义所用插件的版本,这意味着:

std::unordered_map::reserve

您应该始终固定插件版本,这意味着您的构建中使用了所有已使用的插件。

定义java version (source/target)的另一个选项可以通过以下方式完成:

<ion-fab left bottom>
  <button ion-fab mini>
    <ion-icon name="add"></ion-icon>
  </button>
  <ion-fab-list side="top">
    <button ion-fab (tap)="changeMap('SATELLITE')">
      <ion-icon name="map"></ion-icon>
      <div class="label-map">Satellite</div>
    </button>
    <button ion-fab (tap)="changeMap('HYBRID')">
      <ion-icon name="map-map"></ion-icon>
      <div class="label-map">Hybrid</div>
    </button>
    <button ion-fab (tap)="changeMap('NONE')">
      <ion-icon name="map-map"> </ion-icon>
      <div class="label-map">None</div>
    </button>
  </ion-fab-list>
</ion-fab>

如果您已经通过公司pom父级固定插件版本并且仅提供上述属性,则可以省略pluginManagement。

如果您必须使用另一个JDK运行Maven,而不是编译/测试代码,则需要通过toolchains

或者您可以定义要通过fork option使用的编译器,这意味着在您的pom文件中硬编码JDK的位置,这不是一个好主意。

答案 2 :(得分:0)

您可以尝试在pom.xml上添加标记java.version

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
相关问题