'분명히 강의와 똑같이 코드 받아 적었는데...'하면서 강의 속 강사님은 다음 코드로 넘어가지만 나는 넘어가지 못하고 에러 메시지를 맞닥뜨리는 상황을 누구나 겪어 봤을 것이다. 실습하다가 에러가 발생하면 도대체 무엇이 문제인지 몰라 당황스럽기 마련입니다. 자바로 프로그래밍을 배워나가면서 많은 수의 크고 작은 에러들을 접하게 될 것입니다.
대부분의 에러는 작은 실수에서 비롯된 것들이며 익숙하지 않은 초심자들에게는 다소 무섭게 느껴질 수 있지만 , 곧익숙해져서 쉽게 대응할 수 있게 되지만 처음 배울 때는 작은실수 하나 때문에 많은 시간을 허비하곤 합니다. 하지만 에러 메시지에는 많은 정보가 담겨 있고 생각보다 친절하기 때문에 겁먹지 말고 차근차근 뜯어보면 에러를 해결할 수 있습니다!
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. ilegal start of expression
직역하면 문장(또는 수식,expression)의 앞부분이 문법에 맞지 않는다는 의미인데, 간단히 말해서 문장에 문법적 오류가 있다는 뜻이다. 괄호 '('나 '{'를 열고서 닫지 않거나, 수식이나 if문, for문 등에 문법적 오류가 있을 때또는 public이나 static과 같은 키워드를 잘못 사용한 경우에도 발생한다. 에러가 발생한 곳이 문법적으로 옳은지 확인하라
6. class, interface, or enum expected
이 메시지의 의미는 '키워드 class나 interface 또는 enum이 없다.'이지만, 보통괄호 '{' 또는 '}'의 개수가 일치 하지 않는 경우에 발생한다. 열린괄호 '{'와 닫힌괄호'}'의 개수가 같은지 확인하자.
'Back-end > Java' 카테고리의 다른 글
[Java] 문자열 치환(replace, replaceAll, replaceFirst) (0) | 2024.04.02 |
---|