티스토리 뷰
1 | |
Error | Exception in thread "main" java.lang.NoClassDefFoundError: 파일명 |
발생경우 | 클래스 파일을 찾을 수 없는 경우 |
조언 | 실행하려는 클래스 파일 이름이 제대로 되어 있는지 확인필요. 또한, CLASSPATH 설정이 제대로 되어 있는지 확인하며, 만약 되어있지 않다면 설정한다. |
2 | |
Error | cannot resolve symbol symbol : class in (에러가 난 부분) location : class StackTest(찾으려는 위치) |
발생경우 | 이해할 수 없는 클래스나 메소드, 변수명이 올경우 |
조언 | 보통 이 에러는 철자가 틀렸을 경우에 많이 발생한다. 클래스, 메소드, 변수의 철자를 세심히 확인해 본다. 특히 철자를 확인할때 대 소문자 구분을 확실히 체크한다. (자바는 대소문자를 구별한다.) 그리고 클래스에서 발생할 경우 import를 해주었는지 확인필요. |
3 | |
Error | non-static variable 변수이름(or method 메소드이름) cannot br referenced from a static context |
발생경우 | static 메소드 안에서 static으로 선언되지 않은 메소드나 변수를 참조(사용)했을 경우. 특히 메소드의 경우는 인스턴스를 사용하지 않고 static메소드 내에서 바로 선언한 경우. |
조언 | static 선언자의 사용어부를 살펴보고 static 메소드 안에 static으로 선언되어지지 않은 메소드나 변수가 있는지 확인해본다. 만약 그런것이 있으면 메소드를 새로 만들어 그쪽에서 선언한다. 단, 인스턴스를 생성해서 불러줘야 한다는 것을 잊지 말아야한다. |
4 | |
Error | variable 변수명 might not have been intialized |
발생경우 | 지역변수인 변수명의 변수가 초기화가 되어있지 않았을 경우 |
조언 | 지역변수(메소드 내에서 선언한 변수)를 초기화 하지 않은채 선언했을 경우 발생한다. 맴버 필드가 아닌 경우는 반드시 변수 선언시 초기화를 해주어야 한다. (맴버 필드는 자바 프로그램 자체에서 자동으로 default값으로 초기화 해준다.) |
5 | |
Error | class 클래스명 is public, should be declared in a file named 클래스명.java |
발생경우 | 클래스명이 public으로 선언되었는데 파일명과 다를 경우 |
조언 | public으로 선언될 클래스가 있다면 반드시 그 클래스명과 파일명이 같아야 한다. 클래스명과 파일명의 대소문자 및 철자가 같은지 비교해 본다. 또한, public으로 선언될 클래스가 하나 이상 있는지 찾아본다.(반드시 하나만 있어야 한다.) |
6 | |
Error | push(java.long.object)[메소드(인자로 받을 수 있는 형)] in java.util.Stack(메소드의 클래스) cannot be applied to (int) [잘못 들어간 형] |
발생경우 | 메소드에서 인자를 받을 때 받을 수 있는 형이 아닌 자료형 또는 클래스형을 사용할 경우 |
조언 | 사용하는 메소드의 API를 참고하여 어떤 형을 인자로 받을 수 있는지 찾아본다. API를 보지 못할 경우는 각 자료형으로 인자를 직접 바꾸어 본다. |
7 | |
Error | java.lang.NoSuchMethodError: main Exceition in thread "main" |
발생경우 | 클래스 파일 안에서 main() 메소드를 찾을 수 없는 경우 |
조언 | 자바 애플릿이 아닌 이상 자바 애플리케이션은 반드시 main() 메소드를 사용해야 합니다. main() 메소드를 빼먹지 않았는지 확인해 보십시오. 또한 public static void main(String[] args) 형식으로 씌어졌는지도 확인필요. (main 클래스는 반드시 위와 같은 형식으로 만들어져야 합니다.) |
8 | |
Error | unreported exception java.io.IOException(Exception명); must be caught or declatred to be thrown |
발생경우 | 예외가 발생했는데 예외처리를 하지 않았을 경우. |
조언 | 예외를 발생하는 메소드 같은 경우는 반드시 예외처리를 해주어야 합니다. 예외를 발생하거나 예외처리를 해야하는 메소드는 API를 확인해보시면 알 수 있습니다. 그렇지 않다면 컴파일 후 지금처럼 에러가 난 예외를 예외처리 해주시면 됩니다. 또한, 예외를 처리할 때는 메소드차원에서 throws 예외명을 이용해서 처리할 수 있고 try{} catch{} 구문을 이용해서 직접 처리해 주셔도 됩니다. 특히, 예외도 클래스이므로 반드시 예외가 들어간 패키지를 import 해주어야 합니다. |
9 | |
Error | Note : Calculator.java(파일명) uses or overrides a deprecated API. Note : Recompile with -deprecation for details. |
발생경우 | JDK 버전이 높아졌거나 보안등의 기타이유로 사용이 deprecated된 메소드를 사용한 경우 |
조언 | 이건 예외라기 보단 경고입니다. JDK가 버전이 높아지거나 보안등의 이유에 다라 예전에 만들어졌지만 필요가 없어지거나 대체가 생겨났습니다. 그런 메소드를 depredated 되었다고 하는데 이것은 API상에 나왔었습니다. 또한, 컴파일할때 -deprecation 옵션주면 어떤메소드가 deprecate됐는지 알 수 있습니다. 사용이 중지 됐다고 보기 보다는 사용을 가능하면 하지 않게끔 해주는 거죠. 대치되었거나 버전 업된 메소드를 사용하시면 됩니다. |
10 | |
Error | MouseEvent(클래스명) should be declared abstract; it does not define mousdDragged(java.awt.event.MouseEvent)[메소드명(메소드가 포함된 클래스) in MouseEvent(클래스명) |
발생경우 | implements한 Interface의 모든 메소드를 구현하지 않아서 발생됨 |
조언 | Interface는 모든 메소드가 선언만 되고 구현되지 않은 추상(abstract) 메소드입니다. 만약 Interface를 implements하려면 implements한 클래스가 Interface에서 선언한 모든 메소드를 구현해 주어야 합니다. 하나라도 빠질 경우implements한 클래스도 추상 클래스로 보고 에러가 발생합니다. 구현해 주어야할 메소드명이 나오므로 그곳에 쓰여있는 메소드를 구현해 주면 됩니다. 만약, 그 메소드를 구현해 주었는데 에러가 나면 철자 및 대소문자를 다시 확인해 보십시오. |
11 | |
Error | incompatible types found : /null(입력한 자료형) required : int(요구하는 자료형) |
발생경우 | 입력을 했을때 맞지 않는 자료형이나 클래스형을 입력할 경우 |
조언 | imcompatible은 '성미가 맞지 않는', '모순된' 이라는 뜻을 가진 단어입니다. 단어 뜻처럼 입력 경우 required에 나타난 자료형 및 클래스형을 써주어서 입력을 하지 못하게 되어서 발생하는 에러입니다. found에 나타난 자료형을 required에 나타난 자료형으로 변경해 주시면 됩니다. |
12 | |
Error | package java.servlet(패키지명) does not exist |
발생경우 | import한 패키지가 존재하지 않을 경우 |
조언 | import한 패키지가 존재하지 않을 경우에 발생하는 에러입니다. 철자와 대소문자를 먼저 확인하고 CLASSPATH 설정을 확인해 보시기 바랍니다. 또한 그 곳에 패키지가 jar파일로 있는지도 확인해 보셔야 합니다. (API에 나와있는 패키지는 rt.jar에 다 있습니다. 단 javax가 붙거나 다름으로 시작되는 확장 패키지는 철치해 주어야합니다. (javax.swing 제외)) |
13 | |
Error | java.lang.NullPointerException Exception in thread "main"(메소드) java.lang.NullPointerException at java.awt.Container.addImpl(Container.java:341)... [에러가 일어난 부분] |
발생경우 | 참조하거나 사용한 클래스 또는 자료형이 초기화 되지 않은 경우 |
조언 | 보통 이것은 awt나 배열 부분에서 자주 발생하는데 초기화를 해주지 않아서 많이 발생합니다. 자바의 변수들은 기본적으로(자동으로 초기화 되는 멤버필드등을 제외하고) 초기화를 요구합니다. 에러에 체크된 부분을 컴토해 보시고 초기화를 해주십시오. |
14 | |
Error | ';'(빠진 부분) expected |
발생경우 | 문법상으로 써야할 것을 쓰지 않은 경우 발생합니다. |
조언 | 주로 ';'을 안써주시거나 아님 '()' (괄호)를 열기만 하고 닫지 않은 실수를 할 경우 발생합니다. 대부분 이 에러가 발생하는 경우는 에러에 나온것을 소스에 추가해 주시면 됩니다. |
15 | |
Error | unexpected type required : value(요구하는 타입) found : class(소스상 써준 타입) |
발생경우 | 써주어야할 타입이 아닌 잘못된 타입을 써주었을 경우 |
조언 | unexpected type 에러를 해석하면 '기대하지 않은 타입'이란 뜻을 가지고 있습니다. 즉, 원하는 타입(required)이 아닌데 잘못된 타입(found)을 써준 경우 발생합니다. 에러 체크된 부분의 타입을 required 에서 나타난 타입으로 변경해 주시면 됩니다. |
16 | |
Error | java.lang.ArrayIndexOutBoundsException at Test.main(Test.java:10)[클래스.메소드(파일명:에러난 위치)] Exception in thread "main"(예외가 던져진 메소드) |
발생경우 | 배열의 범위를 넘어선 값을 넣었을 경우 |
조언 | 위의 에러는 특이하게 컴파일은 이상없이 되지만 실행을 하면 발생하는 에러입니다. 배열의 범위를 넘어설 경우에 발생하므로 에러난 위치의 배열의 참조 범위를 확인해보시고 선언해둔 배열의 범위에 맞게 조정해 주시면 됩니다. |
17 | |
Error | illegal start of expression |
발생경우 | 선언자(modifier)를 잘못 집에 넣은 경우 |
조언 | 에러의 단어뜻을 확인해 보면 '표현의 시작이 부적격 합니다.'하고 해석할 수 있습니다. 보통 선언자가 맞지 않거나 쓰일데가 아닌데 선언자를 줄 경우에 많이 발생합니다. 특히 메소드안에서 static 선언자를 쓴 경우에는 직격으로 볼수 있죠. 에러가 난 부분의 선언자를 제거하거나 맞는 것인지 다시 확인해 보십시오. |
18 | |
Error | java.io.InputStream(클래스) is abstract; cannot be instantiated |
발생경우 | abstract로 선언된 클래스를 직접 new 명렁어를 이용하여 인스턴스화 할 경우 |
조언 | abstract로 선언된 클래스를 직접 new 명령어를 이용하여 인스턴스화 할 경우에 발생하는 에러입니다. 왜냐하면, 추상 클래스는 직접 new 명령어를 이용하여 인스턴스화 할 수 없기 때문입니다. 이 경우에는 인스턴스를 다른 방법으로 생성하시면 됩니다. |
19 | |
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 선언자 확인 필요. |
20 | |
Error | inner classes cannot have static declarations |
발생경우 | 클래스 안에서 static 선언자를 쓴 경우 |
조언 | 클래스 안에서는 static 선언자를 쓸 수 없습니다. |
'프로그래밍언어 > 자바. 스프링' 카테고리의 다른 글
[Spring] servlet-context.xml, root-context.xml, web.xml의 차이 (0) | 2020.06.05 |
---|---|
[Java] Web서버와 Was서버의 차이. (0) | 2020.06.04 |
[Spring] 추상클래스와 interface (0) | 2020.05.22 |
[Spring] Interceptor (0) | 2020.05.21 |
[Java] Java 개념 및 면접 예상질문 (0) | 2020.03.31 |