java - Java 7 try-with-resources的Clover检测后,编译失败

原文 标签 java instrumentation java-7 clover try-with-resources

我正在使用一个简单的try-with-resources语句,如下所示:

try (final CSVWriter w = new CSVWriter(new OutputStreamWriter(r.getOutputStream(), "UTF-8"));){
    //do stuff......
}


使用正常的javac Ant任务可以很好地进行编译,但是当我首先使用Clover工具编写代码时,结果代码将不再编译(请参见下面包含的编译消息)。

According to the docs,此版本的Clover支持Java7。是否有人遇到过此问题,或者是否知道问题是什么?

Java版本:

Java版本“ 1.7.0”
Java(TM)SE运行时环境(内部版本pxi3270-20110827_01)
IBM J9 VM(内部版本2.6,JRE 1.7.0 Linux x86-32 20110810_88604(已启用JIT,已启用AOT)
J9VM-R26_Java726_GA_20110810_1208_B88592
准时-r11_20110810_20466
GC-R26_Java726_GA_20110810_1208_B88592
J9CL-20110810_88604)
JCL-20110809_01基于Oracle 7b147


Ant任务的输出:

编译:
     [echo]编译源代码...
    [javac]将135个源文件编译到/ home / ********* / WEB-INF / classes
   [三叶草]三叶草版本3.1.2,建于2011年11月7日(build-842)
   [clover]从以下位置加载:/ home / ******* / clover.jar
   [三叶草]三叶草:注册到*******的商业许可证。
   [clover]在'/home/********/dist/clover/clover.db'更新现有数据库。
   [三叶草]在1.7源级别处理文件。
   [三叶草]三叶草到处都是。检测了135个文件(12个程序包)。
   [三叶草]经过的时间= 1.597秒。 (84.534个文件/秒,12,463.369个源/秒)
    [javac] /tmp/clover2218935617827048125.tmp/com/****/web/DownloadService.java:232:错误:类型的非法启动
    [javac] __CLR3_1_24ae4aegwpi0zhh.R.inc(5592);尝试(新的java.lang.AutoCloseable(){{__CLR3_1_24ae4aegwpi0zhh.R.inc(5593);} public void close(){}}; CSVWriter w =新的CSVWriter(新OutputStreamWriter(response.getOutputStream(),“ UTF-8”));){

最佳答案

您的JDK版本using optional trailing semicolon to terminate resources list in try-with-resources似乎不允许使用it's illegal under JSR 334

检查此documentation

语法:JLS§14.20中TryStatement的现有语法产品集增加了:

TryStatement:
    try ResourceSpecification Block Catchesopt Finallyopt 

Supporting new grammar productions are added:

ResourceSpecification:
    ( Resources ) 
Resources:
    Resource 
    Resource ; Resources 
Resource:
    VariableModifiers Type VariableDeclaratorId = Expression 
    Expression 



  [组合语法的含义是,try语句必须至少具有catch子句,finally块和资源规范中的一个。此外,允许try语句恰好具有这三个组成部分之一。请注意,在资源规范中使用尾部分号是非法的。]


尝试删除最后一个分号:

try (final CSVWriter w = new CSVWriter(new OutputStreamWriter(r.getOutputStream(), "UTF-8"))){
//do stuff......
}

关于java - Java 7 try-with-resources的Clover检测后,编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650213/

相关文章:

java - Java新手:如何从命令行使用Java代理进行检测

Java 7 - 字符串连接器和添加方法

java - 亵渎过滤器错误

java - SimpleAdapter不起作用

java - java.lang.ClassCastException与genericSort一起使用泛型

android - 如何使 MotionEvent 进行缩放?

optimization - LLVm clang,错误:带有-fprofile-instr-use的无效文件格式(坏魔术)

netbeans - 切换到 JDK 7 后构建 EAR 时抛出的异常

java - Java 7,使用HTML格式标签时按钮文本的颜色

java - 如何将ZonedDateTime舍入为持续时间