자바로 프로그래밍을 배워나가면서 많은 수의 크고 작은 에러들을 접하게 될 것이다. 그래서 자주 발생하는 기본적인 에러와 해결방법을 간단히 정리하였다. 에러가 발생하였을 때 참고하고, 그 외의 에러는 에러메시지의 일부를 인터넷에서 검색해서 찾아보면 해결책을 얻는데 도움이 될 것이다.
1. cannot find symbol 또는 cannot resovle 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)이 생성되었는지 확인한다. 클래스 파일이 존재하는데도 메시지가 반복해서 나타난다면 클래스패스(classpath)의 설정이 바르게 되었는지 다시 확인해보자.
5. illegal start of expression
문장에 문법적 오류가 있다는 뜻이다. 에러가 발생하는 곳이 문법적으로 옳은지 확인하라.
6. class, interface, or enum expected
이 메시지의 의미는 '키워드 class나 interface 또는 enum이 없다.'이다. 보통 괄호의 개수가 일치 하지 않는 경우에 발생한다.
7. 에러가 발생했을 때. 어떻게 해결할 것인가에 대한 방법
1. 에러 메시지를 잘 읽고 해당 부분의 코드를 살펴본다.
이상이 없으면 해당 코드의 주위도 함께 살펴본다.
2. 그래도 이상이 없으면 에러 메시지는 잊어버리고 기본적인 부분을 재확인한다.
대부분의 에러는 사소한 것인 경우가 많다.
3. 의심이 가는 부분을 주석처리하거나 따로 떼어내서 테스트 한다.
'Java의 정석' 카테고리의 다른 글
주석 (0) | 2023.09.07 |
---|---|
자바 프로그램의 실행과정 (0) | 2023.09.07 |
자바로 프로그램 작성 (0) | 2023.09.07 |
Java API문서 설치 (0) | 2023.09.07 |
자바 개발도구(JDK) 설치 (0) | 2023.09.07 |