ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바] 사용시 자주 발생하는 에러와 해결방법
    자바 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이므로, 첫줄에 반드시 필요!

     

     

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

    '자바' 카테고리의 다른 글

    [자바] 배열  (0) 2022.06.28
    [자바] JDK1.5 이후 향상된 for문  (0) 2022.06.27
    [자바] 변수  (0) 2022.06.25
    [자바] 기본적인 개념 정리  (0) 2022.06.24
    [자바] Homebrew로 자바설치하기  (0) 2022.06.23
Designed by Tistory.