# 개요

Eclipse에서 컴파일 및 실행을 하면 편하겠지만, CLI 환경에서 실행해야할 상황이 가끔있다.

별 문제없이 명령어로 컴파일하고 실행하면 된다고 생각했으나, 진행하면서 문제가 생겨 해결하는데 시간이 조금 걸린 탓에 잊어먹지 않기 위해, 혹시나 정보를 얻어가시는 분이 있을까 싶어 작성한다.

 

# 이슈

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

먼저, JAVA 코드를 CLI 환경에서 컴파일 및 실행을 하려면, CMD에서 코드가 저장된 경로로 이동한 후 컴파일 및 실행을 하면 된다.

 

 

 

'오류 : 기본 클래스 HelloWorld을(를) 찾거나 로드할 수 없습니다.' 라는 에러 메시지는 .class 파일을 찾을 수 없다는 메시지 이기 때문에 .class 파일이 생성되어있는 곳에서 실행을 하면된다.

 

간혹 .class 파일이 생성되어 있는 곳에서도 오류가 나는 경우에는 컴파일 할 때, 미리 .class 파일 경로를 지정해보자

> javac -d [.class 파일을 저장할 경로] ...

 

Error: A JNI error has occurred, please check your installation and try again...

import 할 라이브러리가 있을 경우에는 이클립스에서는 프로젝트 우클릭 > Build Path > Configure Build Path... > Add External JARs... 를 통해서 바로 프로젝트에 라이브러리를 적용할 수 있다. 그러나 CMD의 경우에는 그 경로를 잡아줘야한다.

 

에러가 발생했다. 컴파일만 잘 되면 실행은 그냥 되는줄 알았지만, 실행할 때도 라이브러리 경로를 지정해줘야하는가 보다.

-cp 옵션을 사용해서 경로를 지정했다.

 

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

?? .. 이번에는 위에서 언급한 .class 파일을 찾지 못하고 있다는 에러가 또 발생했다.

앞서 해결한 HelloWorld 예제는 Java 파일이 하나이지만, 이번에는 Main을 포함한 다양한 Java파일이 있다. 이것 때문에 문제가 나타난 것일까..?

 

절대 경로로도 입력해보고 -d 옵션을 줘서 새로 .class파일을 생성해보고 해도 해결되지 않았다. 이것 때문에 해결하는데 시간이 좀 걸렸다.

 

# 해결

-cp 옵션으로 라이브러리를 추가할 때, 다음과 같이 해야한다.

 

사용 가능한 방법

> java -cp C:\javaDev\JsonTest\lib\json-simple-1.1.1.jar; Main # ; 세미콜론을 꼭 붙여야한다.
> java -cp ../lib\json-simple-1.1.1.jar; Main # 상대 경로도 세미콜론만 붙이면 가능
> java -cp ../lib\json-simple-1.1.1.jar;../lib\json-simple-1.1.2.jar;../lib\json-simple-1.1.3.jar Main # 여러 개의 jar 파일을 참조하는 방법
> java -cp ../lib\*; Main # 또는 간편하게 * 문자를 사용하는 방법(위에 언급했듯 * 뒤에 .jar는 붙이면 안된다. 이 점이 뽀인트)

 

사용하면 안 되는 방법

> java -cp C:\javaDev\JsonTest\lib\json-simple-1.1.1.jar Main # 절대 경로라도 세미콜론이 없으면 불가능
> java -cp ../lib\*.jar; Main # 여러 개의 라이브러리를 참조할 때, *.jar 이런 문자로하면 불가능

컴파일 및 실행할 때 계속해서 라이브러리 파일 경로를 넣기가 귀찮다?

C:\Program Files\Java\jre1.8.0_161\lib\ext 이 경로에 .jar 파일을 넣으면 된다. (물론 기본적인 JAVA 환경변수 설정이 되어있어야 함)