자바

[자바] 사용시 자주 발생하는 에러와 해결방법

j9972 2022. 6. 24. 21:18
728x90

1.  저장된 변수나 메서드를 찾을 수 없다.

cannot find symbol 또는 cannot resolve symbol

Check Point!
- 선언되지 않은 변수나 메서드를 사용하였나 체크
- 변수 또는 메서드의 이름을 잘못 사용한 경우 체크
- 대소문자 체크

 

2. 세미콜론 ';'이 필요한 곳에 없다.

';' expected

Check Point!

- 이를 잊고 실수하는 경우가 있으니 조심하기

 

3. main 메서드를 찾을 수 없다.

Exception in thread "main" java.lang.NoSuchMethodError: main

Check Point!

- 클래스 내에 main메서드가 존재하는지 체크

- main메서드의 선언부 ( public static void main(String[] args) ) 에 오타가 있는지 체크 

- 대소문자 체크

 

4. 특정 클래스를 찾을 수 없다.

예시 - Hello 클래스를 찾을 수 없다.

Exception in thread "main" java.lang.NoClassDefFoundError: Hello

Check Point!

- 클래스 'Hello' 의 철자, 특히 대소문자 체크

- 클래스파일 ( *.class) 생성되었는지 체크

- 클래스파일이 존재하는데도 있다면, 클래스패스( classpath )의 설정이 바르게 되었는지 체크

 

5. 문장 앞부분의 문법이 틀렸다.

illegal start of expression

Check Point!

- 괄호 '(' or '{' 를 열고서 닫지 않았는지 체크

- 수식이나, if문, for문등에 문법적 오류가 있나 체크

- public, static 같은 키워드를 잘못했는지 체크

 

6. 키워드 class, interface 또는 enum이 없다.

class, interface, or enum expected

Check Point!

- 보통 괄호 '{' 또는 '}'의 개수가 일치하지 않는지 체크

 

7. 큰 타입에서 작은 타입으로서의 형변환은 값 손실 발생할 수 있다.

imcompatible types: possible lossy conversion from int to byte

Check Point!

- 명시적으로 형변환 해주기 ex) char ch = (char)1000;

 

8. 배열의 인덱스가 유효한 범위를 넘었다.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException : 7

Check Point!

- 7번째의 인덱스 값이 있는지 체크

 

9. 복사하려는 배열의 위치가 적절하지 못하여 내용보다 여유 공간이 적다

ArrayIndexOutOfBoundsException

Check Point!

- 복사하려는 배열의 공간 크기 체크

 

10. 오버로딩된 메서드가 구분되지 않아서 발생

VarArgsEx. java:5: error: reference to 함수이름 is ambigious

Check Point!

- 가변인자로는 오버로딩된 메소드를 구현하면 이런 에러가 뜨는 경우가 많으니, 되도록 가변인자를 사용한 메소드는 오버로딩하지 않는게 좋다.

 

11. 무한호출

java.lang.StackOverflowError

Check Point!

- main메서드가 종료되지 않고 호출스택에 계속 쌓이게 되면서 생긴것으로, 재귀호출시 종료 조건을 꼭 써주기

 

12. 조상 클래스의 클래스 생성자를 찾을 수 없음 ( 상속을 받는 경우 )

java:숫자: cannot resolve symbol 
symbol : 조상 클래스의 생성자()

Check Point!

- 모든 클래스의 생성자는 반드시 첫줄에 자신의 다른 생성자 또는 조상의 생성자를 호출해야하는데 했는지 체크

- 컴파일러가 자동적으로 super(); 을 생성하기에 조상 클래스를 잘 찾았는지 체크

- 모든 클래스의 최상위 클래스는 Object이므로, 첫줄에 반드시 필요!

 

 

제일 중요한것은, 에러가 발생했을 때에는 에러 메세지를 잘 읽어보자