백준을 풀다보면 "런타임 에러"가 발생하는 경우가 있는 데, 백준은 어느 부분에서 에러가 발생하였는지 알려주지 않는다. 

런타임 에러란 ? 

말 그대로 runtime error로, 실행시에 발생하는 에러이다. 

  1. 배열에 할당된 크기를 넘어서 접근했을 때
  2. 전역 배열의 크기가 메모리 제한을 초과할 때
  3. 지역 배열의 크기가 스택 크기 제한을 넘어갈 때
  4. 0으로 나눌 떄
  5. 라이브러리에서 예외를 발생시켰을 때
  6. 재귀 호출이 너무 깊어질 때
  7. 이미 해제된 메모리를 또 참조할 때
  8. 프로그램(main 함수)이 0이 아닌 수를 반환했을 때
  9. C/C++에서 반환형이 void가 아닌 main이 아닌 함수에서 아무런 값을 반환하지 않았을 때

 

 

 

 

 

 

참고 : https://www.acmicpc.net/board/view/22980

error LNK2001 : "~~" 외부기호를 확인할 수 없습니다. 

에러 이유: 클래스 내부에 static 변수를 선언 -> 해당 static 변수를 찾을 수 없을 때 발생

즉, static 변수를 클래스 내부에 선언하고 생성자 내에서 초기화 해 줄 때 객체가 생성될 때마다 리셋기 때문에 에러가 발생함 

 

<에러 코드- 예시>

// A.h
class A{
private:
	static int a;
public:
	A();
}

//A.cpp
A::A(){
	a=10;
}

 

<해결 방법>

int A::a=10;을 해주어야한다.

// A.h
class A{
private:
	static int a;
public:
	A();
}

//A.cpp

int A::a=10;	//수정부분

A::A(){
	a=10;
}

 

<cf>

static 변수는 전역변수의 성질도 갖고있기 때문에 main()함수 실행하기 전에 할당됨

 

1. "~~~~"은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

 

원인 ( 나의 경우)

cmd창에 주소 입력할 때 "cd 주소" 가 아닌 그냥 주소만 입력했기 때문에 위와 같은 에러가 발생함

 

해결방안

cd를 먼저 입력한 후 주소를 입력한다.

 

2. Error: A JNI error has occurred, please check your installation and try again Exception in thread "main"  java.lang.UnsupportedClassVersionError: Copy has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0

java.lang.UnsupportedClassVersionError 임

 

원인 ( 나의 경우 )

문자 스트림 FileReader 와 FileWriter를 이용하여 c:\windows\system.ini를 c:\Copy\test.txt파일로 복사하는 Copy 클래스를 만들었는데

컴파일한 버전과 실행시 사용하고 있는 자바 버전이 달라 위와 같은 에러가 발생함

 

해결방안

javac (해당파일이름).java --release 8 를 cmd창에 입력한다.

나는 javac Copy.java --release 8를 입력했다. 

 

3. 오류: 기본 클래스 Copy.c을(를) 찾거나 로드할 수 없습니다.

 

원인(나의 경우) 

위에서 말한 Copy파일을 실행시키려고 java Copy.c를 입력하였는데 에러가 발생하였다. 

javac란,  자바컴파일러인데,  자바코드를 작성한 소스파일(.java)을 자바 가상머신이 인식할수 있는 바이트 코드(.class) 타입으로 변환시켜주는 명령어이다.

.class타입으로 변환시키지 않았기 때문에 위와같은 에러 메시지가 발생한 것이다.

 

해결 방안

javac (해당 파일이름).java 를 해준다.

나는 javac Copy.java를 입력했다.

 

+ Recent posts