Back/Java
Java의 정석 [CHAPTER1.-16 자주 발생하는 에러와 해결방법]
자바꿈나무00
2022. 12. 26. 16:35
cannot find symbol / cannot resolve symbol | - 의미: 지정된 변수나 메서드를 찾을 수 없다. - 이유: 선언되지 않은 메서드를 사용하거나, 변수 또는 메서드의 이름을 잘못 사용. - 해결: 대소문자 구분, 스펠링 체크. |
';' expeted | - 의미: 세미콜론';'이 필요한 곳에 없다. - 이유: 모든 문장 끝에 붙여주지 않음. - 해결: 세미콜론';'을 점검 |
Exception in thread "main" java.lang.NoSuchMethodError:main | - 의미: main메서드를 찾을 수 없다. - 이유: 클래스 내에 main메서드가 없거나 메서드의 선언부 'public static void mian(String[] args)'에 오타가 존재. - 해결: main메서드가 클래스에 정의되어 있는지 확인, 정의되어 있다면 main메서드의 선언부에 오타가 없는지 확인. |
Eception in thread "main" java.lang.NoClassDefFoundError: Hello | - 의미: 'Hello'라는 클래스를 찾을 수 없다. - 이유: 대소문자 구분이 잘못된 상태거나 클래스파일(*.class)이 생성되지 않았을 것. - 해결: 대소문자 구분과 클래스파일 생성을 체크한다. 'Hello.java'가 정상적으로 컴파일 되었다면 클래스파일 'Hello.class'가 있어야 한다. 클래스파일이 존재하는데도 동일한 메세지가 반복해서 나타난다면 클래스패스의 설정이 제대로 되었는지 확인. |
illegal start of expression | - 의미: 문장(또는 수식)의 앞 부분이 문법에 맞지 않는다. - 이유: 괄호'(' 나 '{'의 짝이 맞지 않는 경우, 수식이나 if문, for문 등에 문법적 오류가 있는 경우, public이나 static과 같은 키워드를 잘못 사용한 경우. - 해결: error가 발생한 부분이 문법적으로 맞는지 확인. |
class, iterface, or enum expected | - 의미: 키워드 class나 interface 또는 enum이 없다. - 이유: '{'의 짝이 맞지 않는 경우. - 해결: 괄호 '{'점검 |
<에러 대처>
- 실제 에러와 에러 메시지가 관계없는 경우도 있지만 대체로 에러 메시지를 잘 읽고 해당 부분의 코드를 살펴보면 해결할 수 있다. 이상이 없으면 해당 코드의 주위(윗줄과 아래 줄)도 함께 살펴본다.
- 그래도 이상이 없으면 에러 메시지는 잊어버리고 기본적인 부분을 재확인한다. 대부분의 에러는 사소한 것인 경우가 많다.
- 의심이 가는 부분을 주석 처리하거나 따로 떼어내서 테스트한다.
내 경우 처음에 오류를 낸건 'prinln'에서 LN인데 몰라서 IN으로 생각하고 적은 것이다. 그 다음 오류들은 셀 수 없이 많지만 초심자인 내 오류는 스펠링 오타와 괄호 짝을 맞추지 않아서 오류나는 경우가 90%, 그 다음 이유는 내용을 잘 이해하지 못하거나 오해해서 이상한 구조를 만들어 놓는 오류가 많다.
처음엔 오류가 나면 당황했었지만 이제는 하도 많이 틀려보다 보니 오히려 침착하게 메시지를 읽고 수정하고, 그래도 안 되면 구글링해서 다른 사람들의 기록을 보며 해결한다. 침착하자.