자바에서 자주 발생하는 에러는 1번째 ';' expected, 2번째 cannot find symbol 혹은 cannot resolve symbol, 3번째 Expection in thread "main" java.lang.NoSuchMethodError : main, 4번째 Expection in thread "main" java.lang.NoClassDefFoundError : Hello, 5번째 illegal start of expression, 6번째 class, interface, or enum expected 이렇게 6가지이다.
;를 세미콜론이라고 한다. ';' expected는 세미콜론이 문장 끝에 없다는 의미이다. 그러므로 ';' expected에러가 난 문장에 세미콜론을 붙이면 해결된다. 자바의 모든 문장에는 C언어처럼 문장의 끝에 세미콜론이 붙어야 한다. 그렇지 않으면 ';' expected에러가 발생한다.
이 에러는 각각 '심볼을 찾을 수 없다', '심볼을 해결할 수 없다'를 뜻한다. 심볼은 프로그래밍에서 개체나 값을 가리키는 이름을 말한다. 심볼은 변수나 메서드의 다른 말이다. 따라서 cannot find symbol 에러와 cannot resolve symbol 에러는 변수나 메서드를 찾을 수 없다는 뜻이다. 이 두 에러는 선언 안된 변수나 선언 안된 메소드를 사용하거나 변수나 메서드의 이름을 잘못 사용한 경우에 발생한다. 이를 수정하면 에러가 해결될 것이다.
참고) 자바는 대소문자를 구분한다. 그래서 철자, 대소문자의 일치 여부를 꼼꼼하게 확인해야 한다.
이 에러는 main메서드를 찾을 수 없다는 에러이다. 이 에러는 클래스 내에 main 메서드가 없거나 main 메서드에 오타가 있는 경우 발생한다. 그러므로 이 에러는 클래스에 main 메서드가 있는지 확인하고 있다면 오타가 있는지 없는지 확인하고 수정하면 해결할 수 있다.
참고) main메서드는 public static void main(String[] args){ }
이다
이 에러는 Hello라는 이름을 가진 클래스를 찾을 수 없다는 에러이다. 이 에러가 발생하면 Hello라는 이름의 클래스의 철자가 옳바른지 확인한다. 만약 클래스 이름의 철자에 이상이 없다면 클래스 파일이 생성되어 있는자 확인해보자. 이 부분에서 말하는 클래스 파일은 확장자가 .class로 되어있는 파일을 말한다. 예를 들어, 파일명.java가 정상적으로 컴파일됐다면 클래스 파일인 파일명.class가 있어야 한다. 만약, 클래스 파일이 있는데도 이 에러 메시지가 등장한다면 클래스 패스(classpath), 즉, 클래스 경로의 설정이 바르게 설정되어있는지 확인해보자.
참고) 클래스 이름은 철자의 대소문자가 모두 일치해야한다.
이 에러를 그대로 해석하면 문장이 문법에 맞지 않는다는 뜻이다. 그러므로 이 에러 메시지가 나왔다는 것은 문장에 자바의 문법과 관련하여 오류가 존재한다는 소리이다. (), {} 같은 괄호을 열고 닫지 않았거나 자바 문법을 잘못 사용하였거나 키워드를 잘못 사용한 경우에도 발생한다. 그러므로 이 에러 메시지가 나왔다면 에러가 발생한 줄에 자바 문법과 관련하여 옳바르게 코드가 입력되어있는지 확인하고 수정해야 한다.
이 에러의 의미는 class 키워드, interface 키워드, enum 키워드가 없다는 것이지만 보통 괄호의 개수가 맞지 않은 경우 발생한다. 그러므로 열린 괄호와 닫힌 괄호의 개수가 알맞은지 확인해봐야 한다.
참고) 괄호를 열었다면 꼭 괄호를 닫아줘야 한다.