Java 7 try-with-resources 的 Clover 检测后编译失败
我正在使用一个简单的 try-with-resources 语句,如下所示:
try (final CSVWriter w = new CSVWriter(new OutputStreamWriter(r.getOutputStream(), "UTF-8"));){
//do stuff......
}
它使用正常的 javac Ant 任务可以正常编译,但是当我首先让 Clover 检测代码时,生成的代码不再编译(请参阅下面包含编译消息)。
根据文档,此版本的 Clover 确实支持 Java 7。其他人遇到过这个问题或者知道问题是什么吗?
Java版本:
java version "1.7.0" Java(TM) SE Runtime Environment (build pxi3270-20110827_01) IBM J9 VM (build 2.6, JRE 1.7.0 Linux x86-32 20110810_88604 (JIT enabled, AOT enabled) J9VM - R26_Java726_GA_20110810_1208_B88592 JIT - r11_20110810_20466 GC - R26_Java726_GA_20110810_1208_B88592 J9CL - 20110810_88604) JCL - 20110809_01 based on Oracle 7b147
Ant任务的输出:
compile: [echo] Compiling source code... [javac] Compiling 135 source files to /home/*********/WEB-INF/classes [clover] Clover Version 3.1.2, built on November 07 2011 (build-842) [clover] Loaded from: /home/*******/clover.jar [clover] Clover: Commercial License registered to *******. [clover] Updating existing database at '/home/********/dist/clover/clover.db'. [clover] Processing files at 1.7 source level. [clover] Clover all over. Instrumented 135 files (12 packages). [clover] Elapsed time = 1.597 secs. (84.534 files/sec, 12,463.369 srclines/sec) [javac] /tmp/clover2218935617827048125.tmp/com/****/web/DownloadService.java:232: error: illegal start of type [javac] __CLR3_1_24ae4aegwpi0zhh.R.inc(5592);try (new java.lang.AutoCloseable() {{__CLR3_1_24ae4aegwpi0zhh.R.inc(5593);}public void close(){}};CSVWriter w = new CSVWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8"));){
I am using a simple try-with-resources statement like the following:
try (final CSVWriter w = new CSVWriter(new OutputStreamWriter(r.getOutputStream(), "UTF-8"));){
//do stuff......
}
It compiles fine using a normal javac
Ant task, but when I have Clover instrument the code first, the resultant code no longer compiles (see the compilation message included below).
According to the docs, this version of Clover does support Java 7. Has anyone else run across this issue or have any idea what the problem is?
Java version:
java version "1.7.0" Java(TM) SE Runtime Environment (build pxi3270-20110827_01) IBM J9 VM (build 2.6, JRE 1.7.0 Linux x86-32 20110810_88604 (JIT enabled, AOT enabled) J9VM - R26_Java726_GA_20110810_1208_B88592 JIT - r11_20110810_20466 GC - R26_Java726_GA_20110810_1208_B88592 J9CL - 20110810_88604) JCL - 20110809_01 based on Oracle 7b147
Output of Ant task:
compile: [echo] Compiling source code... [javac] Compiling 135 source files to /home/*********/WEB-INF/classes [clover] Clover Version 3.1.2, built on November 07 2011 (build-842) [clover] Loaded from: /home/*******/clover.jar [clover] Clover: Commercial License registered to *******. [clover] Updating existing database at '/home/********/dist/clover/clover.db'. [clover] Processing files at 1.7 source level. [clover] Clover all over. Instrumented 135 files (12 packages). [clover] Elapsed time = 1.597 secs. (84.534 files/sec, 12,463.369 srclines/sec) [javac] /tmp/clover2218935617827048125.tmp/com/****/web/DownloadService.java:232: error: illegal start of type [javac] __CLR3_1_24ae4aegwpi0zhh.R.inc(5592);try (new java.lang.AutoCloseable() {{__CLR3_1_24ae4aegwpi0zhh.R.inc(5593);}public void close(){}};CSVWriter w = new CSVWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8"));){
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
似乎使用可选的尾随分号来终止资源您的 JDK 版本不允许 try-with-resources 中的列表,根据 JSR 334,这是非法的。
检查此文档:
语法:JLS §14.20 中 TryStatement 的现有语法产生式集是增强:
尝试删除最后一个分号:
It seems that using optional trailing semicolon to terminate resources list in try-with-resources is not allowed with your JDK version, it's illegal under JSR 334.
Check this documentation :
SYNTAX: The existing set of grammar productions for TryStatement in JLS §14.20 is augmented with:
Try to drop the last semicolon :