본문 바로가기

노력을 이기는 재능은 없고
노력을 외면하는 결과도 없다.
- 이창호 9단

S T U D Y/Java

[JAVA] 자바에러와 해결방법

  Junesker   2020. 4. 22.
반응형

ERROR

자바로 프로그래밍을 진행하다보면 많은 에러들을 만난다. 에러들을 만났을 때 해결방법을 알거나 어디 부분에서 에러가 났는지 알고 있어 바로 해결하기도 하지만 어떤 에러인지 어디서 난 에러인지 도통 몰라서 찾고 또 찾다가 결국 검색하고 다시 검색해서 해결할때가 여럿 있다.

대부분의 에러는 작은 실수에서 비롯된 것들이며, 곧 익숙해져서 쉽게 대응할 수 있게 되지만 처음 배울 때는 작은 실수 하나 때문에 많은 시간을 허비하곤 한다. 

 

 

 

 

 

1.  세미콜론을 누락했을때 발생하는 에러

';' expected

세미콜론 ';'이 코드 마지막 부분마다 붙여주었어야 하는데, 그렇지 못했을때 발생한다. 자바의 모든 문장의 끝에는 세미콜론(';')을 붙여주어야 하는데 가끔 이를 잊고 실수하기 쉽다.

 

 

 

 

 

2.  main메서드가 잘못되었을때 발생하는 에러

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

"main메서드를 찾을 수 없습니다."는 뜻인데 실제로 클래스 내에 main메서드가 존재하지 않거나 메서드의 선언부 "public static void main(String[] args)"에 오타가 존재하는 경우에 발생한다. 해결방법은 간단하다. main메서드가 클래스에 정의되어 있는지 확인하고, 정의되어 있따면 main메서드의 선언부에 오타가 없는지 확인한다. 자바는 대소문자를 구별하므로 대소문자의 일치여부까지 정확히 확인해야한다.

 

 

 

 

 

3.  클래스를 찾을 수 없을때 발생하는 에러

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

"JavaTestClass"라는 클래스를 찾을 수 없다."는 뜻이다. 클래스 "JavaTestClass"의 철자, 특히 대소문자를 확인해보고 이상이 없으면 클래스파일이 생성되었는지 확인한다. JavaTestClass.java가 정상적으로 컴파일 되었다면 클래스파일 "JavaTestClass.class"가 있어야한다. 클래스 파일이 존재하는데도 동일한 메세지가 반복해서 나타난다면 클래스패스의 설정이 바르게 되었는지 다시 확인해본다.

 

 

 

 

 

4.  지정된 변수나 메서드를 찾을 수 없을때 발생하는 에러

cannot find symbol or cannot resolve symbol

지정된 변수나 메서드를 찾을 수 없다는 뜻으로 선언되지 않은 변수나 메서드를 사용하거나, 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생한다. 자바에서는 대소문자 구분을 하기 때문에 철자 뿐만 아니라 대소문자의 일치여부도 정확하게 확인해야한다.

 

 

 

 

 

5.  문법이 맞지 않을때 발생하는 에러

illegal start of expression

문장의 앞부분이 문법에 맞지 않는다는 의미인데, 간단히 문장에 문법적 오류가 있다는 뜻이다. 괄호를 열고서 닫지 않거나, 수식이나 if문, for문 등에 문법적 오류가 있을때 또는 public이나 static과 같은 키워드를 잘못 사용한 경우에도 발생한다. 에러가 발생할때 발생한 곳이 문법적으로 옳은지 확인한다.

 

 

 

 

 

6.  클래스나 인터페이 등이 없을때 발생하는 에러

class, interface or enum expected

"키워드 class나 Interface 또는 enum이 없다"라는 뜻을 가지지만 보통은 괄호의 개수가 일치 하지 않은 경우에 발생한다. 괄호를 열었다면 닫힌 괄호가 정확하게 있는지 확인한다.

 

 

 

 

 

7.  클래스 또는 자료형이 초기화되지 않았을때 발생하는 에러

java.lang.NullPointerException

선언한 클래스나 자료형이 초기화되지 않아서 해당 값이 null로 표기될때 발생한다. 자바의 변수들은 기본적으로 초기화를 해주어야한다. 에러가 발생한 부분의 자료형이나 변수 등이 초기화가 되어있는지 확인한다.

 

 

 

 

 

8.  배열의 범위를 넘어섰을때 발생하는 에러

java.lang.ArrayIndexOutBoundsException

배열의 범위를 넘어서서 값을 넣으려했을때 발생한다. 배열로 선언한 배열의 범위를 넘어섰을경우, 발생하는데 배열의 참조하는 범위를 확인하고 선언해준 배열의 크기에 맞게 범위를 조정해준다.

 

 

 

 

 

9.  메서드 작성시 리턴타입을 선언하지 않아 발생하는 에러

invalid method declaration: return type required

메서드를 선언하게되면 "public void getMemberList(){}", "public String getMemberName(){}" 등과 같이 메서드의 리턴타입을 선언하게 된다. 그렇지만 리턴타입을 선언하지 않아 메서드의 선언 방법이 잘못되었다고 알려준다. 이때는 메서드의 리턴타입을 확인하고 잘 선언되었는지 확인한다.

 

 

 

 

 

반응형

'S T U D Y > Java' 카테고리의 다른 글

[JAVA] 변수와 상수  (0) 2020.04.25
[JAVA] 자바(JAVA)란?  (0) 2020.04.17

댓글