[JAVA/Error] 자바에서 발생하는 에러와 해결방법
자바에서 자주 발생하는 기본적인 에러와 해결방법 정리`ㅅ'
JAVA의 정석을 참고하여 적었다.
cannot find symbol 또는 cannot resolve symbol
- 지정된 변수나 메서드를 찾을 수 없다는 뜻
- 선언되지 않은 변수나 메서드를 사용하거나, 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생
-> 자바는 대소문자 구분을 하기 때문에 철자 뿐 만아니라 대소문자의 일치여부도 검토해봐야함
';' expected
- 세미콜론이 필요한 곳에 없다는 뜻
-> 자바는 모든 문장에 세미콜론을 붙여야한다. 세미콜론이 빠졌는지 확인해보자
Exception in thread "main" java.lang.NoSuchMethodError: main
- main 메서드를 찾을 수 없다는 뜻
- 클래스 내에 main 메서드가 존재하지 않거나, 메서드의 선언부 'public static void main(String[] args)'에 오타가 존재하는 경우에 발생한다.
-> main메서드가 클래스에 잘 정의되어 있는지 확인해본다.
정의가 되어있다면 main메서드의 선언부에 오타가 없는지 대소문자 일치여부까지 확인해야한다.
** args는 매개변수의 이름으로 args대신 argv같이 다른 이름으로 사용 가능
Exception in thread "main" java.lang.NoClassDefFoundError: Hello
- 'Hello라는 클래스를 찾을 수 없다.'는 뜻
-> 클래스가 Hello라고 잘 되어있나 철자, 대소문자 확인
이상이 없을 경우엔 클래스 파일이 생성되었는지 확인해야함.
ex) 'Hello.java'가 정상적으로 컴파일 되었다면 클래스파일 'Hello.class'가 있어야함
.class 파일도 존재하는데도 동일한 오류 메시지가 출력된다면 classpath의 설정이 바르게 되었는지 확인해보자
illegal start of expression
- 문법적 오류(문장에 문법적 오류가 있음)
-> 괄호'(' 나 '{'를 열고서 닫지 않거나, 수식이나 if문, for문 등에 문법적 오류가 있을 때 또는 public이나 static과 같은 키워드를 잘못 사용한 경우에도 발생한다.
에러가 발생한 곳이 문법적으로 옳은가 확인해보아라!
class, interface, or enum expected
- 키워드 class나 interface 또는 enum이 없다.라고 해석되지만, 보통 괄호 '{' 또는 '}'의 개수가 일치 하지 않는 경우에 발생한다.
-> 열린괄호와 닫힌괄호의 개수가 같은지 확인해보자
참고 - JAVA의 정석
가장 좋은 방법은 오류 메세지를 구글링해보는 것 같당
break point걸어서 디버깅 해보는 것도 좋은 방법
나중에 디버깅하는 방법도 글로 작성해둬야겠다`ㅅ'