当前位置: 首页 > 知识库问答 >
问题:

Maven Java编译器-使用错误的符合性版本时出现编译错误

曾苗宣
2023-03-14

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

在终端上运行mvn安装时,我们得到以下错误。

 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时,我们看到目标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个答案

葛越泽
2023-03-14

您可以尝试添加标签java。pom上的版本。xml

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
景唯
2023-03-14

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

<project>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.1</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

你应该始终锁定插件版本,这意味着你的构建中所有使用的插件。

定义java版本(源/目标)的另一个选项可以通过以下方式完成:

<project>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.1</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

或者,如果您已经通过企业pom父级固定了插件版本,并且只提供上述属性,则可以省略pluginManagement。

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

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

萧宣
2023-03-14

将此插件添加到您的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.7 Java home设置为:$echo$java_home/library/Java/javaVirtualMachines/jdk1.7.0_25.jdk/contents/home

  • 我已经为Raspberry PI使用了已经编译好的openCV版本。任何感兴趣的人的链接 //usr/local/lib/libopencv_calib3d.so.2.4:未定义对`CV::Mutex::Unlock()'的引用 //usr/local/lib/libopencv_calib3d.so.2.4:未定义对`CV::mutex::lock()‘的引用 //usr/local/lib/l

  • 最近我实现了一个新的构建器与gradle运行詹金斯。我们的项目包含jasper报告,所以我在下面添加了一个由jasper报告api提供的蚂蚁任务来编译jasper报告。 一切都很好,编译和预期的工作,但在部署项目到服务器后,在运行时得到以下错误。 [8/3/17 14:38:53:340 EET] 000000f5 SystemOut O ERROR[14:38:53,333-WebContain

  • 我试图在这里运行一些来自ArcGIS github的示例代码。 当我在IntelliJ Community 2019中导入并尝试运行该项目时,我得到一个错误: 原因:org/openjfx/gradle/javafxplugin已由更新版的Java运行时(类文件版本55.0)编译,此版本的Java运行时仅识别52.0以下的类文件版本 同样的问题--但没有答案。 如何修复此错误?

  • 我目前正在尝试将基于Ant的构建过程转移到Gradle。 任务“:CompileJava”执行失败。编译失败;有关详细信息,请参阅编译器错误输出。“ -stacktrace选项不提供其他信息。所以,Gradle编译显示我的代码中有一些错误。但是这个相同的代码(Ant jar任务的jar)目前被20个或更多的其他项目使用,一切都是可以的。 Gradle似乎是一个很棒的构建工具,所以我想理解为什么当我