1.3错误中不支持泛型,即使在maven构建中使用java_home点jdk1.7

iyfjxgzm  于 2023-01-04  发布在  Java
关注(0)|答案(3)|浏览(156)

运行mvn干净安装时,我收到以下消息

[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

D:\data\work\extjs.parser\src\main\java\com\model\Component.java:[17,15] error:
generics are not supported in -source 1.3

could not parse error message:   (use -source 5 or higher to enable generics)
D:\data\work\extjs.parser\src\main\java\com\model\Container.java:14: error: gene
rics are not supported in -source 1.3
    private List<Component> items;

该项目是简单Maven项目,但是当我已经将JAVA_HOME设置为jdk1.7安装路径时,不会编译并出现泛型错误
然而,当我添加插件时,它工作正常。为什么需要显式设置hava主路径?

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <showDeprecation>true</showDeprecation>
                <showWarnings>true</showWarnings>
                <executable>${env.JAVA_HOME}/bin/javac</executable>
                <fork>true</fork>
            </configuration>
        </plugin>
vsnjm48y

vsnjm48y1#

您需要告诉Maven使用JDK 1.5显式编译源代码,在pom.xml文件中声明Maven编译器插件(maven-compiler-plugin),如下所示:

<project ...>
  <dependencies>
   ...
  </dependencies>
  <build>
    <plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.3.1</version>
           <configuration>
               <source>1.5</source>
               <target>1.5</target>
           </configuration>
       </plugin>
    </plugins>
  </build>
</project>
vxqlmq5t

vxqlmq5t2#

-source 1.3中不支持泛型
错误信息非常清楚,您已经告诉编译器在-source1.3模式下编译,在该模式下没有泛型,因此,没有泛型。

zz2j4svz

zz2j4svz3#

这是个老问题了。等了很长时间之后,我没有得到答案。然而,在浏览maven编译器插件文档时,我发现该插件有默认设置。因此,早期版本使用jdk 1.3作为源/目标的默认设置,而现在使用1.5。例如,在阅读文档n后,运行“mvn clean install -X”观察到,

  • 无论如何,Maven编译目标在内部使用maven编译器插件
  • 在pom中,通过在build部分指定maven-compiler-plugin,我们可以覆盖某些配置,如源/目标
  • 如果我们不指定,那么maven将使用“maven-compiler-plugin”本身根据其版本给出默认值。

因此,在pom中未指定“maven-compiler-plugin”及其配置(源/目标)之前会出现错误。

相关问题