2009-05-08 6 views
2

자이 썬 스크립트를 사용하여 Java 환경 설정을 저장하는 데 문제가있는 것 같습니다. 자이 썬 2.5 베타에서 사용하는 경우 :자이 썬에서 java.util.prefs.Preferences 사용

clazz = Class.forName('mypackage.myclass') 
prefs = Preferences.userNodeForPackage(clazz); 
# or Preferences.userRoot() 
prefs.put('propertyname', 'yes') 

환경 설정은 저장되지 않습니다. 그때 추가하는 경우 :

prefs.flush() 

을 나는

java.util.prefs.BackingStoreException를 얻을 : 파일 잠금을 가져올 수 없습니다.

현재 Java 1.6을 사용하여 Linux 및 Unix에서 실행 중입니다. 내 Java 응용 프로그램이 동일한 시스템에서 java.util.prefs.Preferences를 성공적으로 사용할 수 있기 때문에 확실한 것을 놓치고 싶습니다.

도움을 주시면 감사하겠습니다.

+0

흥미 롭습니다. 환경 설정을 저장하려고하는 위치를 알고 있습니까? –

+0

Jython이 Java와 다른 사용자로 실행될 수 있습니까? 권한이없는 사용자입니까? –

+0

나는 그것들을 /etc/.java/.systemPrefs에 저장하려고하고 있다고 생각한다. 나는 다른 어떤 사용자로서 실행되고 있다고 상상할 수 없으며 루트로서 스크립트를 실행하고 싶지 않다. 또한 모든 운영 체제에서 제대로 실행되어야하므로 파일 시스템의 어느 위치에서나 사용 권한을 설정하지 않아도됩니다. –

답변

1

이 모양은 relevant입니다.

단순히 파일이 만들어지지 않았거나 파일 소유자의 사용 권한이 충분하지 않을 수 있습니까? 아니면 그런 식으로?

+0

예 /etc/.java/.systemPrefs를 쓸 수있는 권한이 사용자에게 없습니다. 사용자의 홈 디렉토리와 같이 일반적으로 쓸 수있는 곳에 쓸 수있는 환경 설정이 있는지 궁금합니다. –

2

귀하의 질문에 대한 의견 및 답변에서 귀하는 /etc/.java/.systemPrefs를 작성하려고 시도한다고 명시합니다. 나는 그것이 실제로 옳다고 생각하지 않는다.

clazz = Class.forName('mypackage.myclass') 
prefs = Preferences.userNodeForPackage(clazz); 
# or Preferences.userRoot() 
prefs.put('propertyname', 'yes') 

당신이 .userPrefs을 얻을 것이다, 그래서 당신은 Preferences.userNodeForPackage을 사용하고 있습니다. 이들은 /home/[user]/.java에 있으며 쓰기 가능해야합니다.

systemPrefs를 사용하면 Linux에서 권한 문제가 발생할 수 있습니다. 기본 설정은 기본적으로 /etc/.java/.systemPrefs에 저장됩니다. 이 디렉토리를 사용할 수 없다면 (예를 들어 jre를 시스템에 복사 한 경우) 을 쓰는 데 사용 된 FileSystemPreferences 클래스는 [java.home] /. systemPrefs로 돌아갑니다.

prefs.flush()를 호출하면 기본 설정이 미리 정의 된 간격으로 저장되고 프로그램이 종료 될 때 호출되므로 필요하지 않습니다.

관련 문제