菜鸟调错(八)—— Maven编译错误:不兼容的类型的解决方案
泛型在实际的工作中应用非常广泛,关于泛型就不在这里赘述了,感兴趣请戳《重新认识泛型》。项目中用到了如下的泛型:
public <T> T query(String sql, ResultSetHandler<T> rsh) throws SQLException { return this.query(sql, rsh, (Object[]) null); }
以上代码在Eclipse中可以编译通过并成功运行,但是当你使用Maven编译的时候就会报错,错误信息如下:
xxx不兼容的类型
需要:xxx
找到: java.lang.Object
Eclipse编译代码时,使用的是自带的JDT(Java Development Tools),而Maven默认使用的是JAVA_HONE中的javac,而javac相对JDT的检查机制来说,更加的严格,所以导致Eclipse可以编译通过,而用Maven编译会报错的结果。
解决方案有两个:
第一个,借助Eclipse的JDT编译
点击 Eclipse –> Project –> Clean… 使用JDT将源代码编译到target文件夹下,然后直接使用mvn package 打包即可(不要加clean)。
第二个,在pom.xml文件中为Maven指定用JDT来编译(推荐)
修改pom.xml文件中maven-compiler-plugin的配置:
<build> ... <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <compilerId>eclipse</compilerId> </configuration> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-compiler-eclipse</artifactId> <version>2.2</version> </dependency> </dependencies> </plugin> .... </plugins> ... </build>
保存,用Maven编译,顺利通过,你又看到了熟悉的提示信息:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.716 s
[INFO] Finished at: 2015-03-31T12:35:12+09:00
[INFO] Final Memory: 18M/219M
[INFO] ------------------------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2014-03-31 菜鸟学Java(十八)——异常