Java 컴파일러

이 환경 설정 페이지에서 Java 소스 코드 컴파일, 빌드 및 검사와 관련된 다양한 설정을 구성할 수 있습니다.

Java 컴파일러 환경 설정은 다음 섹션으로 구분되어 있습니다.

일반

JDK 준수

옵션

설명

기본값

컴파일러 준수 레벨

컴파일러 준수 레벨을 지정합니다.

1.4

기본 준수 설정 사용

사용 가능하면 컴파일러 준수 레벨에 대해 기본 준수 설정이 적용됩니다.

켜기

생성된 클래스 파일 호환성

생성된 클래스 파일 호환성을 지정합니다.

1.2

소스 호환성

허용된 소스 코드의 호환성을 지정합니다.

1.3

'assert'라는 ID를 허용 안함

이 옵션을 사용하는 경우, 컴파일러는 'assert'가 ID(J2SE 1.4에서 예약된 키워드)로 사용될 때마다 오류 또는 경고를 발행합니다.

경고

'enum'이라는 ID를 허용 안함

이 옵션을 사용하는 경우, 컴파일러는 'enum'이 ID(J2SE 5.0에서 예약된 키워드)로 사용될 때마다 오류 또는 경고를 발행합니다.

경고

클래스 파일 생성

생성된 클래스 파일에 변수 속성 추가

사용 가능하면 변수 속성이 클래스 파일에 추가됩니다. 그러면 로컬 변수 이름을 디버거에 표시할 수 있습니다(변수가 한정적으로 지정된 부분). 그런 다음 결과 .class 파일은 더 커집니다.

켜기

생성된 클래스 파일에 행 번호 속성 추가

사용 가능하면 행 번호 정보가 클래스 파일에 추가됩니다. 그러면 소스 코드가 디버거에서 강조표시될 수 있습니다.

켜기

생성된 클래스 파일에 소스 파일 이름 추가

사용 가능하면 소스 파일 이름이 클래스 파일에 추가됩니다. 그러면 디버거는 해당 소스 코드를 나타낼 수 있습니다.

켜기

사용하지 않는 로컬 변수 보존

이 옵션을 사용하는 경우, 사용하지 않은 로컬 변수(예: 읽지 않음)가 클래스 파일에서 제거되지 않습니다. 제거된 경우 이것은 잠재적으로 디버깅을 변경합니다.

켜기

finally 블록 인라인

이 옵션을 사용하는 경우, finally 블록은 생성된 클래스 파일에서 인라인됩니다. 이는 성능에는 긍정적 영향을 주지만 클래스 파일의 크기가 커질 수 있습니다.

끄기

빌드

일반

옵션

설명

기본값

컴파일 단위당 보고되는 최대 문제점 수

하나의 컴파일 단위에 대해 보고해야 하는 문제점 수를 지정합니다.

100

소스 폴더에서 제외 패턴 사용 가능

사용할 수 없는 경우 프로젝트 클래스 경로의 어떤 항목도 제외 패턴과 연관시킬 수 없습니다.

켜기

소스 폴더에 다중 출력 위치 사용 가능

사용할 수 없는 경우 프로젝트 클래스 경로의 어떤 항목도 제외 패턴과 연관시킬 수 없으므로 복수 출력 위치를 사용할 수 없습니다.

켜기

빌드 경로 문제점

빌드 경로 오류 시 빌드 중단

클래스 경로가 올바르지 않은 경우 빌더를 중단하도록 토글할 수 있습니다.

켜기

불완전한 빌드 경로

클래스 경로에 항목이 존재하지 않거나, 적절하지 않거나, 표시되지 않을 때 보고되는 문제점의 심각도를 표시합니다(예: 참조 프로젝트가 닫혀 있음).

오류

순환 종속성

프로젝트가 주기에 포함될 때 보고되는 문제점의 심각도를 표시합니다.

오류

호환되지 않는 필수 2진

프로젝트에 호환되지 않는 2진이 필요할 때 보고되는 문제점의 심각도를 표시합니다.

무시

출력 폴더

중복된 자원

두 번 이상의 자원 발생이 출력 위치에 복사될 때 보고되는 문제점의 심각도를 표시합니다.

경고

프로젝트 정리 시 출력 폴더 정리

Java 빌더가 전체 빌드 조작을 수행할 때 출력 폴더의 정리를 허용할지 여부를 표시합니다.

켜기

필터된 자원

출력 폴더에 복사되지 않은 쉼표로 구분한 파일 패턴. 

''

오류/경고

코드 스타일

옵션

설명

기본값

Static 구성원에 대한 비정적 액세스

사용할 경우, 컴파일러는 표현식 수신기를 사용하여 static 필드 또는 메소드에 액세스할 때마다 오류 또는 경고를 발행합니다. Static 구성원 참조는 유형 이름으로 규정해야 합니다.

경고

Static 구성원에 대한 간접 액세스

이 옵션을 사용하는 경우, 컴파일러는 static 필드 또는 메소드에 간접 방식으로 액세스할 때마다 오류 또는 경고를 발행합니다. 인터페이스의 static 필드는 유형 이름 선언으로 규정되어야 합니다.

경고

인스턴스 필드에 대한 규정되지 않은 액세스

이 옵션을 사용하는 경우, 컴파일러는 규정되지 않은 필드 액세스(예: 'this' 누락)가 발생할 때마다 오류 또는 경고를 발행합니다.

무시

문서화되지 않은 빈 블록

이 옵션을 사용하는 경우, 컴파일러는 설명 주석이 없는 빈 블록 명령문을 발견할 때마다 오류 또는 경고를 발행합니다.

무시

엔클로징 유형의 액세스 불가능한 구성원에 대한 액세스

사용할 경우, 컴파일러는 엔클로징 유형의 액세스가 가능하지 않은 구성원에 액세스를 에뮬레이트할 때마다 오류 또는 경고를 발행합니다. 이 같은 액세스는 성능 함축을 가질 수 있습니다.

무시

생성자 이름을 가진 메소드

생성자 이름으로 메소드를 이름 지정하는 것은 일반적으로 좋지 않은 프로그래밍 스타일입니다. 이 옵션을 사용할 수 있을 때 컴파일러는 이 같은 시나리오를 오류 또는 경고 신호로 표시합니다.

경고

구체화되지 않은 문자열 사용

사용할 경우, 컴파일러는 구체화되지 않은 문자열 리터럴에 대해 오류 또는 경고를 발행합니다(예: //$NON-NLS-<n>$로 태그되지 않음). 

무시

잠재적인 프로그래밍 문제점

serialVersionUID가 없는 직렬화 가능 클래스

이를 사용하는 경우, 'java.io.Serializable'을 구현하는 유형에 serialVersionUID 필드가 포함되지 않을 때마다 컴파일러가 오류 또는 경고를 발행합니다.

경고

지정이 영향을 주지 않음(예: 'x = x')

이를 사용하는 경우, 지정이 영향을 주지 않을 때마다(예: 'x = x') 컴파일러가 오류 또는 경고를 발행합니다.

경고

부울 지정 가능성(예: 'if (a = b)')

이를 사용하는 경우, 부울 지정 가능성이 발생할 때마다(예: 'if (a = b)') 컴파일러가 오류 또는 경고를 발행합니다.

경고

'finally'가 정상적으로 완료되지 않음

이를 사용하는 경우, 컴파일러는 'finally' 문이 정상적으로 완료되지 않을 때마다(예: return 문 포함) 오류 또는 경고를 발행합니다.

경고

비어 있는 명령문

이를 사용하는 경우, 컴파일러는 비어 있는 명령문(예: 불필요한 세미콜론)을 발견할 때마다 오류 또는 경고를 발행합니다.

무시

문자열 연결에서 문자 배열 사용

사용할 경우, 컴파일러는 문자열 연결에서 char[] 표현식이 사용될 때마다 오류 또는 경고를 발행합니다.

"hello" + new char[]{'w','o','r','l','d'}

경고

숨겨진 catch 블록

try 문에 대해 로컬로 일부 catch 블록은 다른 블록을 숨길 수 있습니다. 예를 들면, 다음과 같습니다.

try { throw new java.io.CharConversionException();
} catch (java.io.CharConversionException e) {
} catch (java.io.IOException e) {}.

이 옵션을 사용할 수 있는 경우, 컴파일러는 확인된 예외에 해당하는 숨겨진 catch 블록에 대해 오류 또는 경고를 발행합니다.

경고

이름 음영처리 및 충돌

필드 선언이 다른 필드 또는 변수를 숨김

이 옵션을 사용하는 경우, 필드 선언이 상속된 다른 필드를 숨기면 컴파일러가 오류 또는 경고를 발행합니다.

무시

로컬 변수 선언이 다른 필드 또는 변수를 숨김

이 옵션을 사용하는 경우, 로컬 변수 선언이 다른 필드 또는 변수를 숨기면 컴파일러가 오류 또는 경고를 발행합니다.

무시

생성자 또는 setter 메소드 매개변수 포함

이 옵션을 사용하는 경우, 생성자 또는 setter 메소드 매개변수가 다른 필드 또는 변수를 숨기면 컴파일러가 오류 또는 경고를 발행합니다.

끄기

유형 매개변수가 다른 유형을 숨김

이 옵션을 사용하는 경우, 내부 클래스의 유형 매개변수가 외부 유형을 숨기면 컴파일러가 오류 또는 경고를 발행합니다.

경고

대체되었지만 패키지를 볼 수 없는 메소드

패키지 기본 메소드는 다른 패키지에 표시되지 않으므로 대체될 수 없습니다. 이 옵션을 사용할 수 있을 때 컴파일러는 이 같은 시나리오를 오류 또는 경고 신호로 표시합니다.

경고

보호 설정된 'Object' 메소드와 인터페이스 메소드의 충돌

사용할 경우, 컴파일러는 인터페이스가 상속되지 않은 Object 메소드와 호환할 수 없는 메소드를 정의할 때마다 오류 또는 경고를 발행합니다. 이러한 충돌이 해결될 때까지 인터페이스를 구현할 수 없습니다. 예를 들면 다음과 같습니다.

interface I {
   int clone();
}

경고

이름 음영처리 및 충돌

지원되지 않는 API

사용할 경우, 컴파일러는 지원되지 않는 API의 사용을 오류 또는 경고로 신호합니다.

경고

지원되지 않는 코드 내의 지원되지 않는 API의 사용을 신호로 표시

이 옵션을 사용할 수 있는 경우, 컴파일러는 지원되지 않는 코드 내의 지원되지 않는 API 사용을 신호로 표시합니다. 문제점의 심각도는 "지원되지 않는 API" 옵션으로 제어됩니다.

끄기

지원되지 않는 메소드 대체 또는 구현을 신호로 표시

이 옵션을 사용할 수 있는 경우, 컴파일러는 지원되지 않는 메소드 대체 또는 구현을 신호로 표시합니다. 문제점의 심각도는 "지원되지 않는 API" 옵션으로 제어됩니다.

끄기

금지된 참조(액세스 규칙)

이 옵션을 사용하는 경우, 컴파일러는 액세스 규칙에 지정된 금지된 참조를 신호로 표시합니다.

오류

권장되지 않는 참조(액세스 규칙)

이 옵션을 사용하는 경우, 컴파일러는 액세스 규칙에 지정된 권장되지 않는 참조를 신호로 표시합니다.

경고

불필요한 코드

로컬 변수를 읽지 않음

이 옵션을 사용하는 경우, 로컬 메소드가 선언되지만 범위 내에서 사용되지 않을 때마다 컴파일러가 오류 또는 경고를 발행합니다.

경고

매개변수를 읽지 않음

이 옵션을 사용하는 경우, 매개변수가 선언되지만 범위 내에서 사용되지 않을 때마다 컴파일러가 오류 또는 경고를 발행합니다.

무시

메소드 대체 및 구현 확인

이 옵션을 사용하는 경우, 매개변수가 선언되지만 메소드 대체 또는 교체 시 범위 내에서 사용되지 않을 때마다 컴파일러가 오류 또는 경고를 발행합니다.

끄기

사용하지 않는 가져오기

사용할 경우, 컴파일러는 사용하지 않는 가져오기 참조에 대해 오류 또는 경고를 발행합니다.

경고

사용하지 않는 로컬 또는 private 구성원

이 옵션을 사용하는 경우, 로컬 또는 private 구성원이 선언되지만 동일 단위 내에서 사용되지 않을 때마다 컴파일러가 오류 또는 경고를 발행합니다.

경고

불필요한 else 문

이 옵션을 사용하는 경우, 컴파일러는 불필요한 else 문(예: if (condition) return; else doSomething();)을 발견할 때마다 오류 또는 경고를 발행합니다.

무시

불필요한 cast 또는 'instanceof' 오퍼레이션

이 옵션을 사용하는 경우, 컴파일러는 불필요한 cast 또는 'instanceof' 오퍼레이션(예: if (object instanceof Object) return;)을 발견할 때마다 오류 또는 경고를 발행합니다.

무시

처리 확인된 예외에 대한 불필요한 선언

이 옵션을 사용하는 경우, 컴파일러는 처리 확인된 예외에 대한 불필요한 선언을 발견할 때마다 오류 또는 경고를 발행합니다.

무시

메소드 대체 및 구현 확인

이 옵션을 사용하는 경우, 컴파일러는 메소드 대체 또는 구현 시 발생한 예외에 대한 불필요한 선언을 발견할 때마다 오류 또는 경고를 추가로 발행합니다.

끄기

J2SE 5.0 옵션

선택되지 않은 일반 유형 오퍼레이션

이 옵션을 사용하는 경우, 컴파일러는 선택되지 않은 일반 유형 조작을 발견할 때마다 오류 또는 경고를 발행합니다.

경고

최종 유형 바인드로 선언된 일반 유형 매개변수

이 옵션을 사용하는 경우, 컴파일러는 최종 유형을 포함하는 유형 바운드를 발견할 때마다 오류 또는 경고를 발행합니다.

경고

vararg 인수에 대한 부정확한 유형 일치

이 옵션을 사용하는 경우, 컴파일러는 vararg 인수에 대한 부정확한 유형 일치을 발견할 때마다 오류 또는 경고를 발행합니다.

경고

박싱 및 언박싱 변환

이 옵션을 사용하는 경우, 컴파일러는 박싱 또는 언박싱 변환을 발견할 때마다 오류 또는 경고를 발행합니다. 오토 박싱(autoboxing)은 성능에 부정적인 영향을 줄 수 있습니다.

무시

'@Override' 어노테이션 누락

이 옵션을 사용하는 경우, 컴파일러는 구현된 다른 메소드를 대체하는 메소드를 발견하고 '@Override' 어노테이션 누락을 발견할 때마다 오류 또는 경고를 발행합니다.

무시

'@Deprecated' 어노테이션 누락

이 옵션을 사용하는 경우, 컴파일러는 추가 '@Deprecated' 어노테이션이 없는 지원되지 않는 유형을 발견할 때마다 오류 또는 경고를 발행합니다.

무시

어노테이션을 상위 인터페이스로 사용

이 옵션을 사용하는 경우, 컴파일러는 어노테이션을 구현하는 유형을 발견할 때마다 오류 또는 경고를 발행합니다. 설사 가능하더라도 이는 잘못된 사용으로 간주됩니다.

경고

'switch'에서 enum 상수 일부는 보호되지 않음

이 옵션을 사용하는 경우, 컴파일러는 참조된 열거의 모든 enum 상수에 대해 case 문을 포함하지 않은 switch 문을 발견할 때마다 오류 또는 경고를 발행합니다.

무시

'@SuppressWarnings'에서 처리되지 않은 경고 토큰

이 옵션을 사용하는 경우, 컴파일러는 '@SuppressWarnings' 어노테이션에서 처리되지 않은 경고 토큰을 발견할 때마다 오류 또는 경고를 발행합니다.

경고

'@SuppressWarnings' 어노테이션 사용

이 옵션을 사용하는 경우, 컴파일러는 '@SuppressWarnings' 어노테이션을 처리합니다.

켜기

관련 개념

Java 빌더

관련 타스크

Java 프로그램 빌드
빌드 경로에 대한 작업
JRE에 대한 작업

관련 참조

클래스 경로 변수 환경 설정
Java 빌드 경로 특성