2013-02-07 3 views
3

이 파일은 중복이 아니기 때문에 필자는 관련 문제를 검색하여 발견했지만 Java의 차이점에 대해서는 찾지 않았습니다.Diamond Operator OpenJDK에서는 컴파일되지만 SunJDK에서는 컴파일되지 않습니다. 7

private List<Stuff> apps = new ArrayList<Stuff>(); 
// compiles under both 


private List<Stuff> apps = new ArrayList<>(); 
// compiles under OpenJDK 7 
// SunJDK 7 Error raised is : Syntax error on token "<", ? expected after this token 

왜 이런 경우가 발생합니까? 내 * nix 서버 및 dev 상자에 OpenJDK를 사용하고 싶지만 때로는 다른 사람의 Windows 랩톱을 사용하여 개발 및 테스트를 수행하고 있으며 두 버전간에 문제가 발생한 것은 이번이 처음입니다. 조언이나 생각을 고맙게 여길 것입니다!

또한 Netbeans 7.2 (Windows 또는 Debain에서 오류를 표시하지 않음)를 사용합니다. 이 프로그램은 Play Framework 1.2.5를 사용하며 Java 소스는 ​​1.7로 설정되어 있습니다.

javac -version 
javac 1.7.0_01 

java -version 
java version "1.7.0_01" 
Java<TM> SE Runtime-Environment <build 1.7.0_01-b08> 

하고 내가 소스가 모든 곳에서 내가 말할 수있는 1.7 수있는 모든 곳에서 넷빈즈를 확인했습니다. 명령 줄을 통해 컴파일하면 위에서 설명한 것과 같은 오류가 발생합니다.

답변?

최신 버전의 SunJDK/Java (1.7.0_13)로 업데이트되어 문제가 해결되었습니다.

+1

나를 위해 잘 작동합니다. Eclipse를 사용하고 있습니까? 프로젝트/빌드 설정에서 Java 라이브러리를 변경하거나 "컴파일"버전을 5로 변경하는 마술 트릭을 수행하지 않았는지 확인하십시오. 내 작업은 그 자체로 매우 자주하는 성가신 습관이 있습니다! –

+0

미스터 스푼과 동의하십시오. 내 컴퓨터에서 작동합니다. maven을 사용하는 경우 빌드 섹션에 targetVersion이 올바르게 설정되어 있는지 확인하십시오. http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html – cmonkey

+0

죄송합니다. 나는 Netbeans를 사용하는데 Windows의 경우 1.7이 아닌 1.5 소스로 다시 전환하는 습관이 있으며 데비안에서는 그렇지 않습니다. Netbeans이 내 대답을 고쳐주었습니다. – bladmiral

답변

1

최신 버전의 SunJDK/Java (1.7.0_13)로 업데이트되었으며 문제가 해결되었습니다.

관련 문제