-
자주 발생하는 에러와 해결방법공부/Java 2023. 11. 30. 16:41
자주 발생하는 에러와 해결방법
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 클래스를 찾을 수 없다는 뜻
- 클래스의 철자/대소문자를 확인하고 이상이 없다면 클래스파일(*.class)이 생성되었는지 확인
-> Hello.java가 정상적으로 컴파일 되었다면 클래스파일 Hello.class가 있어야 함
클래스파일이 존재하는제조 동일한 메시지가 나타난다면 클래스패스(classpath) 설정 확인 필요
5. illegal start of expression
- 문장(또는 수식, expression)의 앞부분이 문법에 맞지 않는 것- 문장에 문법적 오류가 있다는 뜻
-> 에러가 발생한 곳이 문법적으로 옳은지 확인
괄호')'나 '{'를 열고 닫지 않았는지, if문, for문 등에 문법적 오류가 있는지, public이나 static 같은 키워드를 잘못 사용한 것인지 확인이 필요함
6. class, interface, or enum expected
- 키워드 class나 interface 또는 enum이 없다는 것
- 주로 괄호의 개수가 일치하지 않을 때 주로 발생
-> 열린괄호와 닫힌괄호의 개수가 같은지 확인
책에선 오류를 체크할 때 해당 내용을 순서대로 처리하길 권장하고 있음
1. 에러 메시지를 잘 읽고 해당 부분의 코드를 살펴본다.
이상이 없으면 해당 코드의 주위(윗줄과 아래 줄)도 함께 살펴본다
2. 그래도 이상이 없으면 에러 메시지는 잊어버리고 기본적인 부분을 재확인한다.
대부분의 에러는 사소한 것인 경우가 많다.
3. 의심이 가는 부분을 주석처리하거나 따로 떼어내서 테스트한다.
필자는 따로 떼어내서 테스트 하는 것이 중요하다고 생각한다.
메서드를 쪼개 작성한다면 추후 에러를 잡거나, 유지보수에도 편할 것 같아 코드를 작성할 때 쪼개서 작성하려 노력하고 있다.
아직은 기능별로 쪼개 작성하는 것이 익숙하지 않아 얼기설기 섞인 스파게티 코드를 더 많이 작성하지만...
코드를 다양하게 보고, 코드를 쪼개는 방법에 익숙해지고 싶다.
'공부 > Java' 카테고리의 다른 글
변수의 타입 (0) 2023.12.01 자바 예약어 종류 (0) 2023.12.01 변수의 선언과 저장 (0) 2023.12.01 이클립스 단축키 모음 (0) 2023.11.30 자바(Java)란? (2) 2023.11.29