2011-04-07 5 views
0

현재 Windows에서 작동하는 NetBeans RCP 응용 프로그램이 있는데 Linux 호환을 시도하고 있습니다. 응용 프로그램은 폴더와 파일을 만들고 파일도 수정합니다.우분투의 Java 응용 프로그램에 대한 권한

아무런 수정없이 Windows에서 제대로 작동하지만 우분투에서는 시작할 때 폴더를 만들지 못합니다. 허가 문제 란 거 알아.

내 옵션에는 어떤 것이 있습니까?

응용 프로그램 자체에서 ProcessBuilder를 사용하여 스크립트를 실행하여 원하는 권한을 할당 할 수 있습니까?

미리 감사드립니다.

+0

당신이 우리에게 스택 트레이스를 줄 수는이 진짜 사용자입니다 ? 스크립트에서 sudo 명령을 사용할 수 있고 권한 할당을 할 수있는 것처럼 사용자를 전환하는 직접적인 방법은 없지만 암호를 제공하고 사용자에게 권한을 부여한다고 가정해야합니다. – vickirk

+0

우분투 컴퓨터로 집에 돌아 왔을 때 스택 추적을 추가 할 것입니다. user.home 속성을 사용하여 폴더에 접근하기 때문에 실제 사용자를 알 수 있습니다. 또한 응용 프로그램이 시작될 때 다른 폴더와 파일이 만들어집니다. – javydreamercsw

+0

죄송합니다. 실제 사용자가 실제 사람이 아니라 아파치 나 오라클 같은 서비스를 말한 사용자가 아닙니다. – vickirk

답변

0

모두는 당신이 우분투에서 프로세스를 실행할 때 누구인지, 그리고 생성하려는 폴더의 경로에 따라 다릅니다. 이 사용자는 해당 디렉토리에 폴더를 만들 권한이 있습니까? 디스크에 어떤 종류의 데이터를 쓰고 있습니까?

System.getProperty("user.home") - 또는 System.getProperty("java.io.tmpdir") : 당신은 아마도 자바 Preferences 또는 같은 사용자가 지향 이잖아 플랫폼 중립적 인 메커니즘을 사용할 수 있습니까?

+0

위의 주석을 참조하십시오. 세부. – javydreamercsw

0

설치 프로세스의 일부로 필요한 폴더를 만들거나 액세스 권한이있는 폴더 (사용자 홈 및 임시 폴더)로 IO를 제한해야합니다. Linux에는 많은 폴더를 배치해야하는 표준 위치가 있으며 관리자는 이러한 표준을 따르지 않는 응용 프로그램을 싫어할 수 있습니다.

어떤 목적으로 필요한 파일/폴더를 알 수 있습니까?

문제의 원인은 Windows와 Linux 간의 경로 구분 기호의 차이입니다. 리눅스에서는 보통의 슬래시를 사용해야합니다. 의 \는 경로 구분 기호가 아니라 이스케이프 문자는 권한이없는 폴더/집에있는 파일을 만들려고함에 따라

/home/javier\marauroa.trace.db 

:이 오류는 경로를 언급하고있다.

경로는해야한다 :

/home/javier/marauroa.trace.db 
당신은 .yourappname 그럼라는 하위 폴더에 앱에서 파일을 두는 것을 고려할 수 있습니다

는이 많은 유닉스 응용 프로그램을 할 것입니다

/home/javier/.yourappname/marauroa.trace.db 

될 것 일반 파일 목록에서 숨 깁니다. 응용 프로그램이 다음과 같은 정적 필드를 사용 할 수 있습니다에서 실행중인 시스템에 대한 경로 구분자 얻으려면 : 당신은 당신이 사용자 디렉토리에 만드는 절대적으로 확신,

java.io.File.seperator 
+0

나는 사용자 가정에서 일하고 있다고 생각합니다. 몇 가지 폴더를 만들 수 있지만 권한 예외가 발생하는 일부 폴더를 만들어야하는 Java 응용 프로그램 (ProcessBuilder 사용)을 시작하려고 할 때. – javydreamercsw

+0

오류 메시지 및 오류 메시지와 같은 자세한 정보를 제공 할 수 있습니까? – Eelke

+0

직장에서 우분투가 없기 때문에 답변을 드릴 가상 컴퓨터를 설정하고 있습니다 ... – javydreamercsw

관련 문제