Properties클래스 setProperty에 관해 질문이 있습니다.. 미치겠음 ㅠㅠ 도와주세요
민트향
Jar실행파일 내부에있는 class에서 setProperty 메소드를 사용하여내부에있는 properties파일의 내용 수정을 할려고 합니다.
이상한건 이클립스 상에서 프로그램을 실행할때는setProperty도 잘 됩니다.
문제는 jar실행파일로 만들었을때 getProperty만 되고 setProperty가 안되네요..
이틀동안 문제점을 찾아보고 이 부분에 대한 소스를 찾아 비교를 해보고바꿔가면서 테스트를 해봐도이유를
모르겠습니다.
아래는 이 부분에 대한 소스 입니다.
public void setProperty(String key,String value) {
try{
java.util.Properties props = new java.util.Properties();
is = path.openStream();
props.load(is);
props.setProperty(key, value);
FileOutputStream os = new FileOutputStream(new File(PROPERTIES_FILENAME));
props.store(os, null);
if(os!=null) os.close();
if(is!=null) is.close();
}catch(Exception e) {
e.printStackTrace();
}
}
파일 path 설정은 다음과 같습니다.
URL path = this.getClass().getResource(/db.properties);
URI PROPERTIES_FILENAME;
PROPERTIES_FILENAME = path.toURI();
제가 의심이 가는것은 OutputStream인데요.. 어떻게 바꿔줘야 할지 모르겠습니다..ㅠㅠ
부디 고수님들의 도움의 손길부탁드립니다...
-
세리
예..ㅠ 저도 1차적으로 .properties파일을 jar파일 외부에 두는 것을 생각해봤는데요.. 문제가 ibatis를 사용하는데 SqlmapConfig.xml에서 .properties정보를 참조하기 위해서는 둘이 같은 path에 있어야 하더군요.
그래서 결국... -
이리온
찬님 얘기에 한표^^
-
희선
흠.. ^^ 개인적인 의견이라면, jar파일안에 있는 .properties 파일을 수정하는건 좀 문제가 있어 보이네요.
.jar 파일을 다른곳으로 옮기면 해당 .properties 파일이 같이 옮겨 가니깐...
제 생각에 \개인적인 설정 정보\ 까지 따라 옮겨 간다는것은 좀 안 좋아 보이네요 ^^;
그냥 jar파일 안에 말고, 외부에 .properties 파일을 유지하거나,
아니면 레지스트리를 (Preferences 클래스)를 사용하는게 어떨까 합니다 -
BabySue
헐 근데... 꽤나 복잡하네요... 패스를 어떤식으로 줘야할지 난감..ㄱㅠ
-
든해
우왁 감사합니다 몰랐던 사실이었습니다 지금 당장 API를 찾아 적용해보고 테스트를 해보겠습니다~
-
LimeTree
db.properties 파일 역시 jar 파일안에 존재하는 것 아닌가요? jar 파일도 일단은 압축된 파일이기 때문에 일반 파일과 같은 접근은 안되는 것으로 알고 있습니다.
jar 파일 내의 파일을 수정하는 것은 저 역시 해본적은 없긴하지만...
일단 java.util.jar 패키지에 살펴보시면 jar 파일에 대한 stream 객체가 별도로 존재하는 것을 확인하실 수 있을 겁니다. 해당 객체를 사용해 보세요.