2011-12-27 5 views
1
나는 다음과 같은 간단한 시도 -과 - 자원 문 사용하고

:컴파일은 자바 7의 클로버 계측 후 실패 시도 -과 - 자원

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

그것은 정상적인 javac Ant 태스크를 사용하여 미세 컴파일하지만 때를 나는 클로버 도구를 먼저 코드에 넣고 결과 코드는 더 이상 컴파일하지 않는다. (아래에 포함 된 컴파일 메시지 참조).

According to the docs이 버전의 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 

개미 작업의 출력 :

 
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"));){ 

답변

1

using optional trailing semicolon to terminate resources list in try-with-resources이 당신의 JDK 버전으로 허용되지 않는 것 같습니다, 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 

[결합 된 문법의 의미는 시도이다 명령문에는 catch 절, finally 블록 및 자원 스펙 중 적어도 하나가 있어야합니다. 또한 try 문은이 세 가지 구성 요소 중 하나만 정확하게 사용할 수 있습니다. 그것은 불법입니다 참고 자원 명세에 후행 세미콜론을하기] 마지막 세미콜론 드롭

보십시오.

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