【问题标题】:Building Maven Project : Giving compilation Error构建 Maven 项目:给出编译错误
【发布时间】:2019-08-07 20:34:23
【问题描述】:

我是 Java/Maven 的新手,我正在尝试构建一个 Maven Spring Boot 项目,它在早期工作并且也成功地创建了 jar 包。但它突然停止工作并开始给出 Maven 编译错误。

我知道这与pom.xml 文件有关。我的最佳猜测:此文件中的某些更改导致它失败。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.loanglide</groupId>
    <artifactId>drools-helloworld</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>drools-helloworld</name>
    <description>Springboot application</description>

    <properties>
        <maven.compiler.source>12.0.1</maven.compiler.source>
        <maven.compiler.target>12.0.1</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <kie.version>6.1.0.Final</kie.version>
    </properties>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.spring.platform</groupId>
                <artifactId>platform-bom</artifactId>
                <version>1.1.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-ci</artifactId>
            <version>6.1.0.Final</version>
        </dependency>
        <dependency>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
          <version>2.3.0</version>
        </dependency>
        <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.3.0</version>
       </dependency>
       <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.16</version>
        <exclusions>
            <exclusion>
                <groupId>com.google.protobuf</groupId>
                <artifactId>protobuf-java</artifactId>
            </exclusion>
        </exclusions>
       </dependency>
       <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
       <dependency>
           <groupId>org.freemarker</groupId>
           <artifactId>freemarker</artifactId>
           <version>2.3.28</version>
           <exclusions>
            <exclusion>
                <groupId>freemarker<!-- Legacy org-less group --></groupId>
                <artifactId>freemarker</artifactId>
            </exclusion>
           </exclusions>
       </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.7.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>3.0.0</version>
            </plugin>
        </plugins>
    </build>
</project>

错误

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.905 s
[INFO] Finished at: 2019-08-08T01:52:48+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project springboot-helloworld: Fatal error compiling: error: invalid target release: 12.0.1 -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Java 版本

java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

我已经尝试了很多类似问题的 stackoverflow 答案,但仍然无法解决这个问题。

【问题讨论】:

    标签: java maven spring-boot pom.xml


    【解决方案1】:

    如果您使用的是 Java 12,请将以下内容添加到 Maven pom.xml。

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

    【讨论】:

    • 在此之后我还需要运行 maven clean 吗?
    • 是的,您必须以 mvn clean package 或 mvn clean install 运行。
    • 在我运行 java-jar jar file 线程 "main" java.lang.UnsupportedClassVersionError: com/loanglide/Drools 后开始出现此错误(类文件版本 56.0),此版本的 Java 运行时仅识别最高 55.0 的类文件版本
    • 当您使用的是在较高版本的java中编译的jar文件并且您的项目是在较低版本的java中时会出现此错误。
    • 感谢您的帮助,我可以在任何地方正确理解 maven 的概念。我讨厌有时陷入类似的问题。如果你能给我一些链接,让我可以深入学习 maven 和一些常见的陷阱,那就太好了。
    【解决方案2】:

    属性maven.compiler.sourcemaven.compiler.target 被许多插件在默认生命周期中使用,如compiler,您可以在this answer 看到。

    你必须尝试:

    <properties>
            <maven.compiler.source>12</maven.compiler.source>
            <maven.compiler.target>12</maven.compiler.target>
    </properties>
    

    但如果你只想覆盖这个目标,你可以像这样配置它:

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

    由于您是 Java 新手,请记住新的 versioning schema,因此即使您已安装 12 版本,如果不打算使用新的语言功能,您也可以针对 11 LTS 目标。

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2015-06-11
      • 2020-10-21
      • 2015-10-21
      • 1970-01-01
      • 2018-12-01
      相关资源
      最近更新 更多