Java

컴파일 에러 메시지 정리

aim4fun 2019. 1. 3.
반응형

1. main() 메소드가 없는 클래스를 실행한 경우


오류: ex.Hello 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.

public static void main(String[] args)


원인: 자바 프로그램은 JVM이 구동되면 맨 처음 main() 메소드를 찾아서 실행한다.

따라서 main() 메소드가 없거나 잘못 작성하면 클래스를 실행할 수 없다.



2. 변수 선언 후 초기화하지 않은 경우


오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

The local variable value may not have been initialized


원인: 초기화되지 않은 변수는 읽을 수가 없다.



3. 데이터 타입별 표현 가능한 값의 범위를 초과하는 값이 변수에 저장된 경우

또는

선언된 배열 타입과 다른 타입의 값을 저장하려고 한 경우


오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

Type mismatch: cannot convert from int to byte


원인: byte가 표현할 수 있는 값의 범위는 -128 ~ 127,

배열은 같은 타입만 저장할 수 있다.



3-1. 자바 정수 리터럴 기본 타입의 저장 범위를 초과하는 정수의 값이 변수에 저장된 경우


오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

The literal 1234567898765 of type int is out of range


원인: 자바 정수 리터럴 기본 타입은 int,

int의 저장 범위를 넘어서는 정수는 값 뒤에 소문자 l 또는 대문자 L(long 타입)을 붙여서 변수에 저장해야 한다.

int가 표현할 수 있는 값의 범위는 -2,147,483,648 ~ 2,147,783,647

ex. long longValue = 1234567898765L;



4. char 타입 변수를 빈 문자(‘’)로 초기화한 경우


오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

Invalid character constant


원인char 타입 변수를 빈 문자로 초기화하려면 ‘ ’ 작은따옴표 사이에 공백을 포함해야 한다.

단, String 변수는 공백없이 “” 큰따옴표 빈 문자로 초기화 가능



5. 정수 타입 / 0 연산 또는 정수 타입 % 0 연산한 경우


오류: Exception in thread "main" java.lang.ArithmeticException: / by zero


원인: 정수 타입인 경우 나누는 수로 0을 사용할 수 없다.

정수 / 0.0 가능, 결과값 Infinity 출력

정수 % 0.0 가능, 결과값 NaN 출력



6. 지역 변수를 선언된 블록 바깥에서 사용한 경우


오류: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

i cannot be resolved to a variable


원인메소드 블록 내에서 선언된 변수는 메소드 실행이 끝나면 메모리에서 자동으로 없어진다.

즉, 지역 변수는 선언된 블록 범위를 벗어나면 사용할 수 없다.



7. null 값을 가지고 있는 참조 타입 변수를 사용한 경우


오류: Exception in thread "main" java.lang.NullPointerException


원인: null로 초기화된 참조 변수는 스택 영역에만 생성되기 때문에 힙 영역에 객체를 참조하지 않는다.

즉, null로 초기화된 참조 변수는 참조할 객체가 없으므로 사용할 수 없다.



8. 배열의 인덱스 범위를 초과해서 사용한 경우


오류: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException


원인배열의 인덱스 범위는 0 ~ (배열변수.length - 1)



9. 정수로 변환할 수 없는 문자열을 정수로 변환시키려고 한 경우


오류: Exception in thread "main" java.lang.NumberFormatException


원인: Integer.parseInt( ) 메소드를 통해 정수로 변환 가능한 문자열 ex. "10", "100" 등…




참고도서 : 이것이 자바다

'Java' 카테고리의 다른 글

Program arguments와 VM arguments의 차이점  (0) 2020.08.06
sdkman 설치  (0) 2020.07.23
sdkman JDK 경로 이클립스에 설정하기  (0) 2020.04.16

댓글