티스토리 뷰

 자바를 cmd에서 컴파일 하고, 컴파일 한 .class 파일을 cmd에서 실행하려할 때 어김없이 등장하는 오류가 있는데,  '기본 클래스 *를 찾거나 로드할 수 없습니다.' 라는 오류다.


 나의 경우 보통 자바 파일을 관리할 때 패키지를 이용하여 관리한다. 패키지를 사용하다 보면 아래의 오류를 정말 많이 만날 수 있다. 해결법을 먼저 소개하자면, java 명령은 패키지의 parent 디렉토리에서 실행하되 실행할 .class 파일의 이름을 줄 때 패키지명.클래스파일명 으로 입력해야 한다.


 java 명령어의 인자로 클래스 이름을 전달할 경우, 패키지 이름을 포함한 full class name을 전달해야 한다. java 프로그램에서는 인자로 들어온 full class name을 기준으로 .class 파일들을 찾기 때문이다. 결국 .class 파일의 상위 디렉토리(parent 또는 root 디렉토리)에서 실행을 해야 한다는 뜻이다.


/* 나의 경우 실행할 IOEx.class파일의 parent 디렉토리가 '자바의 정석\src' 였고, 이 위치에서 'java streamEx.IOEx 매개변수' 명령을 주어 성공적으로 실행을 시켰다. */



 내가 만든 IOEx.class 파일은 매개변수로 준 소스파일(.java)의 내용을 그대로 출력해주는 기능을 담고 있다. 따라서 제대로 실행이 된다면 매개변수로 넘겨준 IOEx.java 파일의 내용이 그대로 cmd창에 출력되어야 할 것이다.


 실행은 되었다는 건 맨 아래의 3줄을 보면 알 수 있지만 보다시피 아무런 것도 출력되지 않는다. IOEx 클래스 파일은 실행을 시켰지만 매개변수 값을 잘못 준 탓이다. IOEx.class 파일의 역할은 매개변수로 주어진 IOEx.java 의 소스코드를 그대로 출력해주는 것인데 화면에 아무것도 없다.


 아래와 같이 IOEx.java 파일의 파일 경로를 현재 디렉토리를 기준으로 다시 설정해서 입력해서 결국 제대로 작동시켰다. cmd 창으로 java 실습을 할 때는 이처럼 패키지, 파일 경로 등을 특히 신경써야 한다.


/* 기존의 IOEx.java 매개변수를 streamEx\IOEx.java 로 경로를 추가해 다시 설정해주었다. streamEX라는 패키지(폴더) 안에 이 파일이 있었으므로 이는 당연한 수순이었다. */


 cmd 창에서 작업을 할 일은 매우 드물겠지만, 매번 접하는 오류다 보니 한 번쯤 정리할 필요성을 느껴 이렇게 정리하게 되었다. 두번 다시 만나고 싶지 않은 오류 중 하나다.


 

'Develop Story > JAVA' 카테고리의 다른 글

<스트림(Stream)>  (0) 2017.09.18
<JVM의 메모리 구조>  (0) 2017.06.29
Java의 정석 3rd Edition 강의 및 교재 평가  (0) 2017.06.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday