티스토리 뷰
Java Error List
ERROR | Exception in thread "main" java.lang.NoClassDefFoundErroe:파일명 |
발생되는 경우 | 클래스 파일을 찾을 수 없는 경우 |
조 치 | 실행하려는 클래스 파일 이름이 제대로 되어 있는지 확인한다. 또한, CLASSPATH 설정이 제대로 되어 있는지 확인하며(DOS Mode에서 set 명령어) 만약, 설정이 되어 있지 않다면 설정한다.(CLASSPATH = jdk버전번호/jre/lib/rt.jar;) |
ERROR | cannot resolve symbol symbol : class in(에러가 난 부분) location : class StackTest(찾으려는 위치) |
발생되는 경우 | 이해할 수 없는 클래스나 메소드, 변수명이 올 경우 |
조 치 | 보통 이 에러는 철자가 틀렸을 경우에 많이 발생한다. 클래스, 메소드, 변수의 철자 를 세심하게 확인해 본다. 특히, 철자를 확인할 때 대/소문자 구분을 확실하게 체크한다.(자바는 대/소문자를 구별한다.) 그리고 클래스에서 발생할 경우 import를 선언해 주었는지 확인해 본다. |
ERROR | non-static variable 변수이름(or method 메소드 이름) cannot br referenced from a static context |
발생되는 경우 | static 메소드 안에서 static으로 선언되지 않은 메소드나 변수를 참조(사용)했을 경 우 특히, 메소드의 경우는 인스턴스를 사용하지 않고 static 메소드 내에서 바로 선 언할 경우 |
조 치 | static 선언자의 사용 여부를 살펴보고 static 메소드 안에 static으로 선언되어지지 않은 메소드나 변수가 있는지 확인해 본다. 만약 그런것이 있으면 메소드를 새로 만들어 그쪽에서 선언한다. 단, 인스턴스를 생 성해서 불러줘야 한다는 것을 잊지 말아야 한다. |
ERROR | valiable 변수명 might not have been initialized |
발생되는 경우 | 지역변수인 변수명의 변수가 초기화가 되어 있지 않았을 경우 |
조 치 | 지역변수(메소드 내에서 선언한 변수)를 초기화 하지 않은 채 선언했을 경우 발생한다. 멤버 필드가 아닌 경우는 반드시 변수 선언시 초기화를 해주어야 한다. (멤버 필드는 자바 프로그램 자체에서 자동으로 Default 값으로 초기화 해준다.) |
ERROR | class 클래스명 is public, should be declared in a file named 클래스명.java |
발생되는 경우 | 클래스명이 public으로 선언되었는데 파일명과 다를 경우 |
조 치 | public으로 선언된 클래스가 있다면 반드시 그 클래스명과 파일명이 같아야 한다. 클래스명과 파일명의 대/소문자 및 철자가 같은지 확인해 본다. 또한, public으로 선언된 클래스가 하나 이상 있는지 찾아본다.(반드시 하나만 있어 야 한다.) |
ERROR | push(java.lang.objrct)[메소드(인자로 받을 수 있는 형)] in java.util.Stack(메소드의 클래스) cannot be applied to (int)[잘못 들어간 형] |
발생되는 경우 | 메소드에서 인자를 받을 때 받을 수 있는 형이 아닌 자료형 또는 클래스형을 사용할 경우 |
조 치 | 사용하는 메소드의 API를 참고하여 어떤 형을 인자로 받을 수 있는지 찾아본다. API를 보지 못할 경우는 각 자료형으로 인자를 직접 바꾸어 본다. |
ERROR | java.lang.NoSuchMethodError: main Exception in thread :main" |
발생되는 경우 | 클래스 파일 안에서 main() 메소드를 찾을 수 없는 경우 |
조 치 | 자바 애플릿이 아닌 이상 자바 애플리케이션은 반드시 main() 메소드를 사용해야 한 다. main() 메소드를 빼먹지 않았는지 확인해 본다. 또한, public static void main(String[] args) 형식으로 쓰여졌는지 확인해 본다. (main 클래스는 반드시 위와 같은 형식으로 만들어져야 한다.) |
ERROR | unreported exception java.io.IOException(Exception명); must be caught or declared to be thrown |
발생되는 경우 | 예외가 발생하는데 예외 처리를 해주지 않았을 경우 |
조 치 | 예외를 발생하는 메소드 같은 경우는 반드시 예외 처리를 해주어야 한다. 예외를 발 생하거나 예외 처리를 해야하는 메소드는 API를 확인해 보면 알 수 있다. 그렇지 않 다면 컴파일 후 지금처럼 에러가 난 예외를 예외 처리해주면 된다. 또한, 예외를 처리할 때는 메소드 차원에서 throws 예외명을 이용하여 처리할 수 있 고 try{} catch{} 구문을 이용하여 직접 처리해 주어도 된다. 특히, 예외도 클래스이므로 반드시 예외가 들어간 패키지를 import 해주어야 한다. |
ERROR | Note : Calculator.java(파일명) uses or overrides a deprecated API. Note : Recompile with -deprecation for details. |
발생되는 경우 | JDK 버전이 높아졌거나 보안 등의 이유로 사용이 deprecated된 메소드를 사용한 경우 |
조 치 | 예외라기 보다는 경고 메시지로 JDK 가 버전이 높아지거나 보안 등의 이유에 따라 예전에 만들어졌지만 필요가 없어지거나 대체된 메소드가 생겨났다. 이런 메소드를 deprecated 되었다고 하는데, 이는 API 상에 나와 있다. 또한, 컴파 일할 때 -deprecation 옵션을 주면 어떤 메소드가 deprecate 됐는지 알 수 있다. 사용이 중지 됐다고 보기 보다는 사용을 가능하면 하지 않게끔 하는 것으로 대치되 었거나 버전 업된 메소드를 사용하면 된다. |
ERROR | MouseEvent(클래스명) should be declared abstract; it does not define mouseDragged(java.awt.event.MouseEvent)[메소드명(메소드가 포함된 클래스)] in MouseEvent(클래스명) |
발생되는 경우 | implements한 interface의 모든 메소드를 구현하지 않아서 발생됨 |
조 치 | interface는 모든 메소드가 선언만되고 구현되지 않은 추상(abstract) 메소드이다. 만 약, interface를 implements하려면 implements한 클래스가 interface에서 선언한 모 든 메소드를 구현해 주어야 한다. 하나라도 빠질 경우 implements한 클래스도 추상 클래스로 보고 에러가 발생한다. 에러에 구현해 주어야 할 메소드명이 나오므로 그 곳에 쓰여있는 메소드를 구현해주면 된다. 만약, 그 메소드를 구현해 주었는데 에러가 발생하면 철자 및 대/소문자를 다시 확 인해 본다. |
ERROR | incompatible types found : /null(입력한 자료형) required : int(요구하는 자료형) |
발생되는 경우 | 입력했을 때 맞지 않는 자료형이나 클래스형을 입력할 경우 |
조 치 | incompatible은 성미가 맞지 않는, 모순된 이라는 뜻을 가진 단어로 단어의 뜻처럼 입력 경우 required에 나타난 자료형 및 클래스형을 요구하는데 found에서 나타난 자료형 및 클래스형을 써주어서 입력을 하지 못하게 되어서 발생하는 에러이다. found에 나타난 자료형을 required에 나타난 자료형으로 변경해 주면 된다. |
ERROR | package java.servlet(패키지명) does not exist |
발생되는 경우 | import한 패키지가 존재하지 않을 경우 |
조 치 | import한 패키지가 존재하지 않을 경우에 발생하는 에러로 철자와 대/소문자를 먼저 확인하고 CLASSPATH 설정을 확인해 본다. 또한, 그 곳에 패키지가 jar 파일로 있는지도 확인해본다.(API에 나와 있는 패키지는 rt.jar에 다 있다.) 단, javax가 붙거나 다음으로 시작되는 확장 패키지를 설치해 주어야 한다.(javax.swing 제외) |
ERROR | java.lang.NullPointerException Exception in thread "main"(메소드) java.lang.NullpointerException at java.awt.Container.addlmpl(Container.java:341)...[에러가 발생한 부분] |
발생되는 경우 | 참조하거나 사용한 클래스 또는 자료형이 초기화되지 않은 경우 |
조 치 | 보통 이것은 awt나 배열 부분에서 자주 발생하는데 초기화를 해주지 않아서 많이 발 생한다. 자바의 변수들은 기본적으로(자동으로 초기화 되는 멤버 필드 등을 제외하 고) 초기화를 요구한다. 에러에 체크된 부분을 검토해 보고 초기화를 해준다. |
ERROR | ';'(빠진 부분) expected |
발생되는 경우 | 문법상으로 써야할 것을 쓰지 않은 경우 |
조 치 | 주로 ';'을 안써주거나 아니면 '()'(괄호)를 열기만 하고 닫지 않은 실수를 할 경우 발 생하며 대부분 이 에러가 발생한 경우는 에러에 나온것을 소스에 추가해 주면 된다. |
ERROR | unexpected type required : value(요구하는 타입) found : class(소스상 써준 타입) |
발생되는 경우 | 써주어야 할 타입이 아닌 잘못된 타입을 써주었을 경우 |
조 치 | unexpected type 에러를 해석하면 기대하지 않은 타입이란 뜻으로 원하는 타입 (required)이 아닌데 잘못된 타입(found)을 써준 경우 발생한다. 에러 체크된 부분의 타입을 required에서 나타난 타입으로 변경해 주면 된다. |
ERROR | java.lang.ArrayIndexOutOfBoundsException at Test.amin(Test.java:10)[클래스.메소드(파일명:에러난 위치)] Exception in thread "main"(예외가 던져진 메소드) |
발생되는 경우 | 배열의 범위를 넘어선 값을 넣었을 경우 |
조 치 | 위의 에러는 특이하게 컴파일은 이상 없이 되지만 실행을 하면 발생하는 에러이다. 배열의 범위를 넘어선 경우 발생하므로 에러난 위치의 배열의 참조 범위를 확인해보고 선언해준 배열의 범위에 맞게 조정해 주면 된다. |
ERROR | illegal start of expression |
발생되는 경우 | 선언자(modifier)를 잘못 넣은 경우 |
조 치 | 에러의 단어 뜻은 표현의 시작이 부적격 하다 라는 의미로 보통 선언자가 맞지 않거 나 쓰일때가 아닌데 선언자를 사용한 경우 발생하며 특히, 메소드안에서 static 선언자를 사용한 경우 발생한다. 에러가 발생한 부분의 선언자를 제거하거나 맞는 것인지 다시 확인한다. |
ERROR | java.io.InputStream(클래스) is abstract; cannot be instantiated |
발생되는 경우 | abstract로 선언된 클래스를 직접 new 명령어를 이용하여 인스턴스화 할 경우 |
조 치 | abstract로 선언된 클래스를 직접 new 명령어를 이용하여 인스턴스화 할 경우 발생 하는데, 이는 추상 클래스는 직접 new 명령어를 이용하여 인스턴스화 할 수 없기 때문이다. 이런 경우 인스턴스를 다른 방법으로 생성하면 되는데, 예를 들어 인스턴 스를 반환하는 메소드를 이용한다거나 상속을 통해서 상속받은 클래스의 인스턴스를 만들어 직접 인스턴스를 만드는 효과를 낼 수도 있다. |
ERROR | local variable name(변수명) is accessed from within inner class; needs to be declared final |
발생되는 경우 | Local Class의 변수를 final로 선언하지 않은 경우 |
조 치 | Local Class의 변수는 참조 변수의 참조값 변동을 방지하기 위하여 final 선언자를 붙여주어야 한다. 변수에 final 선언자를 붙이면 변수는 값을 변동할 수 없는 상수처럼 쓰이며 만약 이 값을 참조할 경우 자바는 이 값을 넘기는게 아니라 이 값의 복사본을 참조값으로 넘 기게 된다. 그러므로 Local Class 에서 참조값 변동 없이 변수를 참조할 수 있게 되 는 것이다. Local Class를 정의해준 곳을 살펴보고 final 선언자를 확인해본다. |
ERROR | inner classes cannot have static declarations |
발생되는 경우 | 내부 클래스 안에서 static 선언자를 쓴 경우 |
조 치 | 내부 클래스 안에서는 static 선언자를 쓸 수 없다. 내부 클래스 안에서 사용된 static 선언자를 제거해 준다. |
ERROR | referenceto List is ambiguous, both class java.util.List(클래스) in java.util(패키 지) and class java.awt.List(클래스) in java.awt(패키지) match |
발생되는 경우 | 클래스 사용시 다른 패키지내에 동일 이름의 클래스들이 있어서 참조가 모호할 경우 |
조 치 | import한 패키지 중에 같은 이름을 사용하는 클래스를 클래스 이름만으로 생성함으 로써 참조가 모호해질 경우 발생한다. 이와 같은 경우는 import를 하나 제거하거나 아니면 java.util.List 이런식으로 직접 그 클래스의 패키지를 같이 써줌으로써 모호 성을 제거할 수 있다. |
ERROR | m()(메소드명) in B(클래스명) cannot override m()(메소드명) in A(클래스명); attempting to use incompatiable return type |
발생되는 경우 | 클래스를 상속받고서 메소드를 오버라이드 하고자 할 때 잘못한 경우 |
조 치 | 클래스를 상속 받고서 메소드를 오버라이드 할 경우에는 다음과 같은 규칙을 지켜야 한다. 1. 메소드의 이름이 같아야 한다. 2. 메소드의 파라미터 개수, 데이터형이 같아야 한다. 3. 메소드의 리턴형이 같아야 한다. 4. 상위 메소드와 동일하거나 더 구체적인 Exception을 발생시켜야 한다. 5. 상위 메소드와 동일하거나 접근 범위가 더 넓은 접근 제한자를 사용해야 한다. |
ERROR | getPathBetweenRows(int, int)(메소드) has protected access in javax.swing.jTree (클래스) |
발생되는 경우 | protected로 선언된 메소드를 상속 없이 직접 불러올 경우 |
조 치 | protected로 선언되어 있는 메소드는 상속하거나 같은 Package에 있을 때만 쓸 수 있다. 상속하여 다시 public 메소드로 값을 받던지 아니면 public 메소드 중에서 비 슷한 기능을 하는 메소드가 있는지 찾아서 바꾸어 주어야 한다. |
ERROR | invalid method declaration; return type required |
발생되는 경우 | 리턴 타입을 쓰지 않아 메소드의 선언이 잘못된 경우 |
조 치 | 리턴 타입을 쓰지 않아 메소드의 선언이 잘못된 경우 발생하므로 에러가 발생한 메 소드를 확인해보고 리턴 타입을 맞추어 준다. |
ERROR | Error occurred during initialization of VM java.lang.ExceptionInInitializerError |
발생되는 경우 | static으로 선언된 변수중 초기화가 안되어 있는 것이 있는 경우 |
조 치 | static으로 선언된 변수중에 초기화가 안된게 있는 경우 발생하며 에러가 발생한 변 수를 확인해보고 알맞은 초기화를 시켜주거나 변수의 위치를 자동 초기화가 가능한 메소드 밖의 클래스 변수로서 사용하게 한다. |
ERROR | Error opening registry key 'Spftware\JavaSoft\Java Runtime Environment' Error: could not find java.dll Error: could not find Java 2 Runtime Environment |
발생되는 경우 | 중복 설치 등으로 인해 레지스트리 키 값이 잘못된 경우 |
조 치 | 중복 설치 등으로 인해 레지스트리 키 값이 잘못되어 있는 경우 발생하며 레지스트 리 편집기를 열어 HKEY_LOCAL_MACHINE ⇒ SOFTWARE ⇒ JavaSoft에 가보면 3 개의 키가 있는데, 그 중에서 첫번째 키인 Java 런타임 환경을 마우스 오른쪽 버튼 을 클릭하여 Java Runtime Environment로 이름을 바꿔주면 된다. |
ERROR | Error Registry Key 'Software\JavaSoftware\Java Runtime Environment\CurrentVerison' has value '1.1', but '1.3' is requied. Error: could not find java.dll Error: could not find java 2 Runtime Environment. |
발생되는 경우 | 중복 설치 등으로 인해 레지스트리 키 값의 자바 버전이 잘못된 경우 |
조 치 | 중복 설치 등으로 인해 레지스트리 키 값의 자바 버전이 잘못되어 발생하며 레지스 트리 편집기를 열어서 HKEY_LOCAL_MACHINE ⇒ SOFTWARE ⇒ JavaSoft ⇒ Java Runtime Environment의 Current version의 값을 1.3으로 값이 되어 있는지 확인한다. |
ERROR | java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver(드라이브명) |
발생되는 경우 | JDBC로 데이터베이스에 연결하는 중 드라이버를 찾지 못할 경우 |
조 치 | JDBC를 연결하는 중에 드라이버를 찾지 못할 경우에 발생하며 각 데이터베이스에 맞는 드라이버가 제대로 다운로드 되었는지 확인해보고 드라이버의 위치가 클래스 패스에 설정되어 있는지 확인한다. |
ERROR | Method printLn(java.lang.String)(메소드명) not found in class java.io.PrintStream (클래스명) |
발생되는 경우 | 자신이 사용한 클래스의 메소드가 맞지 않는(없는) 경우 |
조 치 | 자신이 사용한 클래스의 메소드가 맞지 않는(없는) 경우 발생하며 API를 통해서 사 용하고자 하는 클래스와 메소드를 확인해 본다. 보통 이런 경우 메소드의 철자나 대 /소문자를 잘못 쓴 경우가 많으니 유심히 확인해 보고 마지막으로 철자와 대/소문자 도 맞는다면 메소드의 인자의 객체형을 맞게 주었는지 확인해 본다. |
'Computer > JAVA' 카테고리의 다른 글
Java 관리자 권한으로 실행하기 (JNA 사용) (0) | 2019.05.22 |
---|---|
[JAVA] Base64 인코딩, 디코딩 (Java8+, java.util.Base64) (0) | 2019.03.02 |
[Java] JDK 설치 및 환경변수 설정 (0) | 2017.12.11 |
[Swing] Hyperlink Connect by clicking Jlabel (0) | 2017.04.10 |
JavaService 등록/해제 (윈도우부팅시 자바프로그램 자동실행) (0) | 2017.03.11 |