Maven编译try-with-resources报错,添加-source 7后仍异常求助
解决Maven编译Try-with-Resources的错误及后续配置问题
先梳理下你的环境信息:
- Apache Maven 3.5.2,主目录:
/usr/share/maven - Java 1.8.0_162,主目录:
/usr/lib/jvm/java-8-openjdk-amd64/jre - Linux 4.15.0-20-generic amd64
第一个错误的根源
Try-with-Resources是Java 7才引入的语法特性,但Maven默认会用-source 1.5来编译代码,这就直接导致了编译报错:
/path/driver.java:[29,13] try-with-resources is not supported in -source 1.5 [ERROR] (use -source 7 or higher to enable try-with-resources)
第二个错误的原因
你尝试添加-source 7参数后出现的「设置文件不存在」错误,应该是命令行参数输入错误导致的——比如你可能误把参数格式写错,或者打错了字符(比如把参数写成了类似-Dmaven.settings.file=/path/ource,最后那个ource明显是拼写失误),Maven错误地把这个无效参数当成了用户设置文件的路径,所以才会报错找不到。
正确的解决方法
推荐直接在项目的pom.xml里配置编译插件,这样既不用每次敲命令行参数,也能避免输入错误,团队成员也能共享正确的配置:
在pom.xml的<build>节点下的<plugins>里添加以下配置(用你的Java 1.8版本,比7更兼容):
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <!-- 这个版本兼容Java 8,也可以用更高的稳定版本 --> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <!-- 匹配你的平台编码 --> </configuration> </plugin>
如果只是临时想用命令行解决,正确的命令应该是:
mvn clean install -Dmaven.compiler.source=1.8 -Dmaven.compiler.target=1.8
配置完成后,重新执行mvn clean install就能正常编译包含Try-with-Resources的代码了。
内容的提问来源于stack exchange,提问作者david.t_92
相关产品推荐
相关产品推荐

