이 환경 설정 페이지에서 Java 소스 코드 컴파일, 빌드 및 검사와 관련된 다양한 설정을 구성할 수 있습니다.
Java 컴파일러 환경 설정은 다음 섹션으로 구분되어 있습니다.
옵션 |
설명 |
기본값 |
---|---|---|
컴파일러 준수 레벨 |
컴파일러 준수 레벨을 지정합니다. |
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;)을 발견할 때마다 오류 또는 경고를 발행합니다. |
무시 |
처리 확인된 예외에 대한 불필요한 선언 |
이 옵션을 사용하는 경우, 컴파일러는 처리 확인된 예외에 대한 불필요한 선언을 발견할 때마다 오류 또는 경고를 발행합니다. |
무시 |
메소드 대체 및 구현 확인 |
이 옵션을 사용하는 경우, 컴파일러는 메소드 대체 또는 구현 시 발생한 예외에 대한 불필요한 선언을 발견할 때마다 오류 또는 경고를 추가로 발행합니다. |
끄기 |
선택되지 않은 일반 유형 오퍼레이션 |
이 옵션을 사용하는 경우, 컴파일러는 선택되지 않은 일반 유형 조작을 발견할 때마다 오류 또는 경고를 발행합니다. |
경고 |
최종 유형 바인드로 선언된 일반 유형 매개변수 |
이 옵션을 사용하는 경우, 컴파일러는 최종 유형을 포함하는 유형 바운드를 발견할 때마다 오류 또는 경고를 발행합니다. |
경고 |
vararg 인수에 대한 부정확한 유형 일치 |
이 옵션을 사용하는 경우, 컴파일러는 vararg 인수에 대한 부정확한 유형 일치을 발견할 때마다 오류 또는 경고를 발행합니다. |
경고 |
박싱 및 언박싱 변환 |
이 옵션을 사용하는 경우, 컴파일러는 박싱 또는 언박싱 변환을 발견할 때마다 오류 또는 경고를 발행합니다. 오토 박싱(autoboxing)은 성능에 부정적인 영향을 줄 수 있습니다. |
무시 |
'@Override' 어노테이션 누락 |
이 옵션을 사용하는 경우, 컴파일러는 구현된 다른 메소드를 대체하는 메소드를 발견하고 '@Override' 어노테이션 누락을 발견할 때마다 오류 또는 경고를 발행합니다. |
무시 |
'@Deprecated' 어노테이션 누락 |
이 옵션을 사용하는 경우, 컴파일러는 추가 '@Deprecated' 어노테이션이 없는 지원되지 않는 유형을 발견할 때마다 오류 또는 경고를 발행합니다. |
무시 |
어노테이션을 상위 인터페이스로 사용 |
이 옵션을 사용하는 경우, 컴파일러는 어노테이션을 구현하는 유형을 발견할 때마다 오류 또는 경고를 발행합니다. 설사 가능하더라도 이는 잘못된 사용으로 간주됩니다. |
경고 |
'switch'에서 enum 상수 일부는 보호되지 않음 |
이 옵션을 사용하는 경우, 컴파일러는 참조된 열거의 모든 enum 상수에 대해 case 문을 포함하지 않은 switch 문을 발견할 때마다 오류 또는 경고를 발행합니다. |
무시 |
'@SuppressWarnings'에서 처리되지 않은 경고 토큰 |
이 옵션을 사용하는 경우, 컴파일러는 '@SuppressWarnings' 어노테이션에서 처리되지 않은 경고 토큰을 발견할 때마다 오류 또는 경고를 발행합니다. |
경고 |
'@SuppressWarnings' 어노테이션 사용 |
이 옵션을 사용하는 경우, 컴파일러는 '@SuppressWarnings' 어노테이션을 처리합니다. |
켜기 |
Java 프로그램 빌드
빌드 경로에 대한 작업
JRE에 대한 작업