자바 환경변수 지정에 대한 질문입니다.
도서관에서 자바책을 대충 뒤져봐도 대부분 windows에서의 이야기 뿐이라서 막상 linux에서는 자바의 환경변수를 어떻게 지정해야 되는지 모르겠네요.
일단 제가 사용하는 툴킷에 있는 windows 사용자 메뉴얼에 따르면set CLASSPATH=" "
를 사용해서 CLASSPATH를 툴킷이 있는 lib폴더로 지정하라고 나오더군요.
그래서 linux에서 똑같이 만들어주기 위해서 script를 사용해서
CLASSPATH라는 환경변수를 지정해놨습니다.
그러고 나서 javac 를 사용해서 컴파일을 해봤는데요..
.jar파일들은 읽는것 같은데 package를 못찾는것 같더군요.
그래서 package를 등록하려고 책을 찾아보니...javac -d ***** text.java
와 같이 *****부분에 package들이 들어있는 루트 디렉토리를 넣고(아마도 c:\***** 인듯 합니다) 그 package를 필요로 하는 소스부분에서
import 명령을 사용해서 그 기본 폴더내의 경로를 써주면 되는것 같더군요.
예를 들어서 package의 이름이 testPackage라면
import opcauto.testPackage
와 같이요..
그런데..
linux에서도 이와 똑같이 해보려니 경로 자체 설정이 다른듯 하군요.
예를 들어서 windows에서는 c:\library\dir1\package
이라는 패키지를 import하고 싶으면
소스에서import dir1.package
이렇게 하고 컴파일 시에javac -d library *****
이렇게 하면 되는 듯 하던데요..
만약에 linux에서 /root/library/dir1/package
이라는 패키지를 import하고 싶으면
소스에서 import library.dir1.package
이렇게 하고 컴파일 시에javac -d root
이렇게 해주면 되는건가요?
좀 한심할 정도로 초보적인 질문이긴 하지만..
자바 시작한지 이틀째라서 조금 이해해주시고
답변 부탁드립니다.
Re:
기본적으로 리눅스에서의 설정과 윈도우에서의 설정의 차이는 없습니다.
환경변수를 셋팅하는 방식이라던지 하는 차이는 있을지 몰라도,
기본적으로 틀리지 않죠.
-d는 출력 directory를 위한 인자 입니다.위의 용도로 가
-d는 출력 directory를 위한 인자 입니다.
위의 용도로 가능할 수도 있겠지만, import하는 경로를 지정하는 것은 -classpath입니다.
참고로 윈도우랑 Linux에서 CLASSPATH설정의 차이라면 윈도위에서는 디렉토리 구별을 하기위해서 ';'을 쓰지만 Linux에서는 ':'을 씁니다.
그리고 Linux에서 쉘에 따라서 환경변수는 export해 줘야 지만 동작합니다.
자바 개발하실 때 CLASSPATH는 절대로, 웬만하면, Never 잡지
자바 개발하실 때 CLASSPATH는 절대로, 웬만하면, Never 잡지 마시기 바랍니다. 반면에 JAVA_HOME은 잡는 것이 좋습니다.
----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...
자바도..
RTFM
시작한지 이틀째는 질문을 할 만한 시기가 아니라고 생각되는군요.
J2SE 문서 다운 받아서 쭉 읽어보세요. 원하는 대답이 다 있습니다.
우선 답변 주신 분들꼐 감사드립니다.
우선 답변 주신 분들께 감사드립니다.
기본적인 레퍼런스도 읽지 않은 상태에서 질문드리는게 예의가 아니라는건 압니다.
하지만 일단 시간이 없는 상태에서 java로 된 toolkit으로 구현이 가능한지를 먼저 테스트 해봐야 하기 때문에 Java에 대한 기본 지식없이 소스수정->테스트부터 손대게 되었습니다.
만약 않된다 싶으면 기존의 c++로 만들던 소스로 다시 돌아가야 하기 때문입니다.( 사실 바라는 바이기도 합니다만.. )
그래서 질문이 좀 기본적인 내용이 될지도 모르지만 양해 부탁드립니다.
linux에서 CLASSPATH를 환경변수로 지정하고 컴파일을 해보니까 java에서 기본적으로 사용하는 lib(java.lang등등)들을 못 읽는것 같더군요.
그래서 fender님께서 NEVER 사용하지 말라고 하셨던게 아닌가 싶네요.
javac -classpath /opt/jintegra/lib/jintegra.jar:/opt/jintegra/lib/opcauto OpcAutoClient.java
와 같이 옵션을 주어서 컴파일 해 봤습니다.
환경변수로 CLASSPATH를 만드는것과 같지 않을까 싶었는데..
이렇게 하니까 컴파일은 되는군요.
그런데 문제가
java -DJINTEGRA_NATIVE_MODE OpcAutoClient
와 같이 실행을 시키면..
와 같은 에러가 뜨는군요.
역시 자바에서 기본 제공하는 lib들을 못 읽는 것 같은데..
이상한건 이미 CLASSPATH로 정의되어있던 환경변수도 지웠고 -clientpath옵션도 없이 실행을 했는데도 이렇다는 것입니다.
그래서 한번 성공한 김에 똑같이 -clientpath를 붙여서 해봤습니다.
이렇군요. 마찬가지로 기본 lib를 못 찾는듯 합니다.
첫번째 질문은 위에 제가 시도한 방법중에 첫번쨰 방법은 classpath의 별도 정의가 없는데도 (CLASSPATH 환경변수도 없습니다) 왜 기본 lib를 못 읽는가 하는 것입니다.
두번쨰는 CLASSPATH로 환경변수를 지정하지 않고 기본 lib와 제가 사용하고자 하는 lib를 모두 추가하려면 source코드에서 포함시켜주는 수 밖에 없는건가요?
댓글 달기