maven source 1.3 中不支持泛型 解决办法

本文详细介绍了在使用Maven进行项目打包时遇到的源代码版本与Maven编译器版本不匹配导致的错误提示,并提供了解决方案。通过在项目的pom.xml文件中配置编译器版本为1.5,成功解决了泛型和注释版本不支持的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

maven打包时始终出现以下提示:
1、-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)List<User> userList= new ArrayList<User>();
2、-source 1.3 中不支持注释(请使用 -source 5 或更高版本以启用注释)@WebService(endpointInterface = "com.webservice.service.LoadService")

而用命令mvn -v查看结果:

C:\Users\Administrator>mvn -v
Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800)
Java version: 1.6.0
Java home: D:\Program Files\Java\jdk1.6.0\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows vista" version: "6.1" arch: "x86" Family: "windows"

显然与所配置的JDK无关;

最终解决办法:在项目的pom.xml中,添加

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

再执行mvn install,OK

 

原文地址:http://blog.youkuaiyun.com/jingling_zy/article/details/7529268

### Java 1.5 不支持 diamond 运算符的原因 Java 1.5 不支持 diamond 运算符的主要原因是该特性是在 JDK 1.7 中引入的[^1]。Diamond 运算符(`<>`)是一种语法糖,用于简化实例化时的代码书写。在 Java 1.5 中,开发者需要显式指定,例如: ```java List<String> list = new ArrayList<String>(); ``` 而在 JDK 1.7 及更高版本中,可以使用 diamond 运算符简化为: ```java List<String> list = new ArrayList<>(); ``` 这种简化依赖于编译器对的自动推断能力,而这种能力在 Java 1.5 中尚未实现。因此,当 Maven 使用 JDK 1.5 编译时,会抛出类似“1.5不支持diamond运算符”的错误。 --- ### 解决方案 #### 方法一:升级 JDK 版本 最直接的解决方案是将项目的 JDK 版本升级到 1.7 或更高版本。可以通过以下方式配置: 1. **修改 `pom.xml` 文件** 在项目的 `pom.xml` 文件中添加或修改 `maven-compiler-plugin` 插件的配置,指定源代码和目标字节码版本为 1.8 或更高版本[^4]: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> ``` 2. **修改 Maven 的全局配置文件** 在 Maven 的 `settings.xml` 文件中添加一个 profile,确保编译时使用 JDK 1.8[^3]: ```xml <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile> ``` #### 方法二:保持 JDK 1.5 并使用传统写法 如果无法升级 JDK 版本,则需要避免使用 diamond 运算符,改用传统的显式声明方式。例如: ```java List<String> list = new ArrayList<String>(); ``` 这种方式虽然冗长,但在兼容性要求较高的场景下是必要的。 #### 方法三:调整 IDE 和项目配置 在 IDE 中调整项目的语言级别和字节码版本: 1. **调整语言级别** 在 IntelliJ IDEA 中,通过快捷键 `Ctrl + Alt + Shift + S` 或菜单 `File -> Project Structure -> Modules`,将 `Language Level` 设置为 8 或更高版本[^4]。 2. **调整字节码版本** 在 Maven 的设置中,找到 `Build, Execution, Deployment -> Compiler -> Java Compiler`,将 `Target bytecode version` 设置为 1.8[^2]。 --- ### 总结 Java 1.5 不支持 diamond 运算符的根本原因在于该特性是在 JDK 1.7 中首次引入的。解决方法包括升级 JDK 版本、修改 `pom.xml` 配置、调整 Maven 的全局配置文件,或者在无法升级 JDK 的情况下使用传统写法替代 diamond 运算符。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值