본문 바로가기

IT관련

자바 에러 java: error: package javax.jms does not exist, import ...

Java 프로그램에서 컴파일할때 아래와같이 package OOO does not exist 에러와 함께, import .. 메시지가 나오면 해당 jar 파일을 못찾는다는 의미입니다.

 

$ javac Test1.java
Test1.java:3: error: package javax.jms does not exist
import javax.jms.*;
^
1 error
$

 

CLASSPATH 가 제대로 잡혀있는지 확인하고, 해당 CLASSPATH 에 해당 패키지가 들어있는지 먼저 확인합니다.

 

CLASSPATH 설정은 아래와 같이 합니다.

$ export CLASSPATH=.:./lib/*:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:$CLASSPATH

 

이때 중요한게 디렉토리명만 지정하면 안되고, 반드시 디렉토리명 뒤에 별표(*)를 붙여주어야 한다는 것입니다.

해당 jar 파일까지 적어주던가, 아니면 별표(*) 를 적어줘야 합니다. 그냥 디렉토리명만 넣으면 못찾습니다.

즉, ./lib/*  (o)

      ./lib    (x)

 

또, 해당 디렉토리로 직접 들어가서 정말로 해당 패키지에대한 jar 파일이 있는지도 확인해야 합니다.

$ cd ./lib
ls -l *jms*
-rw-r--r--. 1 oracle oinstall 62729 May 11 03:11 javax.jms-api-2.0.jar

 

CLASSPATH 지정이 잘 안되는 경우는 javac 컴파일할때나 java 로 실행할때 커맨드라인상에서 직접 CLASSPATH 를 지정할 수도 있습니다.  (-cp 옵션)

 

-- 컴파일
$ javac -cp "./lib/*" Test1.java

-- 테스트
$ java -cp "./lib/*":. Test1