Maven can';编译Java1.8

Maven can';编译Java1.8,maven,maven-assembly-plugin,maven-shade-plugin,Maven,Maven Assembly Plugin,Maven Shade Plugin,我正试图使用maven构建一个jar,但我不断地得到错误 ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Application: Fatal error compiling: invalid target release: 1.8 -> [Help 1] [ERROR] [ERROR] To see

我正试图使用maven构建一个jar,但我不断地得到错误

ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile 
(default-compile) on project Application: Fatal error compiling: invalid target release: 1.8 -> [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
mvn-v输出

mvn -version
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T09:29:23-08:00)
Maven home: /usr/local/Cellar/maven/3.2.5/libexec
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.10.1", arch: "x86_64", family: "mac"
所以它看起来像是指向1.6jdk

但是我有1.8JDK

java版本

java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
POM.xml

 <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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.brian.ridecellchallenge</groupId>
    <artifactId>Application</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.group.id.Launcher1</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>


    </build>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>
</project>

4.0.0
com.brian.ridecellchallenge
应用
0.0.1-快照
src
maven编译器插件
3.1
1.8
1.8
org.apache.maven.plugins
maven阴影插件
1.6
包裹
阴凉处
com.group.id.1
朱尼特
朱尼特
4.12
测试
公地io
公地io
2.4
乔达时间
乔达时间
2.6

Maven依赖于正在设置的JAVA_HOME环境变量。根据您的操作系统进行设置,然后重新运行构建

编辑: 使用“导出”设置变量

export JAVA_HOME=/path/to/java

作为MacOS用户,打开一个
终端
,创建或编辑一个文件
.bash\u profile
(在用户主页的目录中),并将以下代码片段放在那里:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

保存该文件并重新打开终端实例。如果您在那里作为命令执行
export
,您应该会看到一个有效的
JAVA_HOME
,其中包含JDK 8安装的位置。之后重新启动IDE,maven应该能够为您构建漂亮的java
目标1.8
代码。

您可以尝试在编译器插件中进行配置。它在我的本地工作

      <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <executable><!--path-to-your-java8-home-directoru--></executable>
                <compilerVersion>1.8</compilerVersion>
            </configuration>
        </plugin>

maven编译器插件
3.3
1.8

我注意到maven编译器插件似乎忽略了配置

<source>1.8</source>
<target>1.8</target>
前两个“-source”和“-target”参数是maven编译器插件使用的默认参数;第二对参数是插件由于上述配置“compilerArguments”而添加的参数。javac似乎只使用了最后两个参数(如果一个参数重复多次,最后一个参数将覆盖所有以前的参数),但我不确定这是否是一个标准的“确定”行为

我使用了不同版本的maven编译器插件,不同版本的maven。我深入检查了我的所有配置(例如,系统变量、java或maven执行中使用的每个脚本等等),我确信一切正常


这很奇怪,但我的结论是,使用java 8的maven编译器插件中有一个bug。

如果有人在使用maven构建项目时使用Eclipse Kepler SR2,并且对java 1.8有问题,请尝试访问Eclipse市场,搜索名为java 8 support for m2e for Eclipse Kepler SR2的插件,这对我很有帮助,现在Maven编译Java 1.8源代码没有问题。

是的,它似乎是Maven-compiler-plugin中的一个bug。当我从3.1升级到3.5.1时,它可以工作。

我不确定,但你能尝试更新你的Maven.plugin版本吗

试一试


org.apache.maven.plugins
maven编译器插件
1.8
1.8
3.6.1

因为Maven不知道要构建的jdk版本。 你可以试试看

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

1.8
1.8

你的JAVAÁu主页是什么?@Brian其中一个答案解决了你的问题吗?我不知道你发现了什么,但我们编写了2017,Maven仍然没有3.5.1版…@BartisÁron你可能想检查Maven编译器插件的可用版本:奇怪。现在我看到了这些版本。我不知道当时我看到了什么……虽然这段代码可能会回答这个问题,但提供关于它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。请看这个。我同意一定有错误。我找了又找,终于找到了这个,甚至这个对我来说都不起作用。我认为这就是问题所在。即使使用您提到的compilerArguments配置,我也无法让maven正确调用Java编译器。有些事情迫使它在我的系统上使用1.5,这真的令人沮丧。我是java/eclipse的新手。你能告诉我在哪里更新这个吗?是否有eclipse设置文件或其他文件?@granadaCoder-其全部位于pom.xml下:)
<compilerArguments>
  <source>1.8</source>
  <target>1.8</target>
</compilerArguments>
-d [...] -g -nowarn -target 1.6 -source 1.6 -encoding UTF-8 -source 1.8 -target 1.8
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
            </configuration>
        <version>3.6.1</version>
</plugin>
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>