자바로 프로그래밍을 받으면 많은 에러를 접하게 될것이고 대부분 작은 실수에서 비롯된 것이지만 작은 실수 하나 때문에 많은 시간을 허비하기도 한다. 자주 발생하는 에러메시지들에 대해 알아보자.
1. cannot find symbol 또는 cannot resolve symbol
지정된 변수나 메서드를 찾을 수 없다는 뜻으로 선언되지 않은 변수나 메서드를 사용하거나 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생한다. 자바에서는 대소문자 구분을 하기 때문에 철자 뿐만 아니라 대소문자의 일치여부도 확인해야한다.
2. ';' expected
세미콜론 ; 이 필요한 곳에 없다는 뜻이다. 자바의 모든 문장의 끝에 ';'을 붙여주는 것을 체크해야한다.
3. Exception in thread "main" java.lang.NoSuchMethodError: main
'main 메서드를 찾을 수 없다'는 뜻인데 실제로 클래스 내에 main 메서드가 존재하지않거나 메서드의 선언부 'public static void main(String[] args)'에 오타가 존재하는 경우 발생된다. 이 경우 main 메서드가 클래스에 정의되어있는지 확인하고 정의되어있다면 main 메서드의 선언부에 오타가 없는지 확인한다.
4. Exception in thread "main" java.lang.NoClassDefFoundError: Hello
'Hello라는 클래스를 찾을 수 없다'는 뜻이다. 클래스 'Hello'의 철자, 특히 대소문자를 확인하고 이상이 없으면 클래스파일(*.class)이 생성되었는지 확인한다. 예를 드어 Hello.java가 정상적으로 컴파일 되었다면 클래스 파일 'Hello.class'가 있어야한다. 클래스파일이 존재하는데도 동일한 메시지가 나타난다면 클래스패스(classpath)의 설정이 바르게되어있는지 확인해본다.
5. illegal start of expression
문장의 앞부분이 문법에 맞지않다는 의미인데 간단히 말해 문법적인 오류가 있다는 뜻이다. 괄호를 열고서 닫지 않았다거나, 수식이나 if문, for문 등에 문법적 오류가 있을때 또는 public이나 static 같은 키워드를 잘못 사용한 경우에도 발생된다.
6. class, interface, or enum expected
키워드 class나 interface 또는 enum이 없다는 뜻이지만 보통 괄호 { } 의 개수가 일치하지 않는 경우에 발생된다. 열린 괄호와 닫힌 괄호의 개수가 같은지 확인하자.
1. 에러 메시지를 잘 읽고 해당 부분의 코드를 살펴본다. 이상이 없으면 해당 코드 주위(윗줄/아랫줄)를 함께 살펴본다.
2. 에러메시지는 잊어버리고 기본적인 부분을 재확인한다.
3. 의심이 가는부분을 주석처리하거나 따로 떼어내서 테스트한다.
'Spec UP - Backend > Java의 정석' 카테고리의 다른 글
Chapter 2. 변수 (0) | 2021.11.29 |
---|---|
Chapter1. 자바를 시작하기전에 (0) | 2021.11.22 |
댓글