2011-01-09 3 views
3

java.lang.ClassLoader $ NativeLibrary.load()에서 java.lang.UnsatisfiedLinkError가 표시되고 "액세스가 거부되었습니다."라는 메시지가 나타납니다. DLL이 UNC 경로를 통해 네트워크 공유에서로드되고 있습니다. 그것은 이전에 다른 네트워크 공유에 오류없이 작동했습니다 (필자는이 특정 공유가 "기본 Windows"라는 시스템 관리자의 말을 들었습니다). 그래서 나의 첫 번째 본능은 cacls를 사용하여 Everyone과 DLL 모두에게 DLL에 대한 모든 권한을 부여하는 것이 었습니다. Java 코드를 실행하는 특정 사용자. Windows 탐색기에서 DLL 속성을 볼 때 해당 권한이 분명히 설정되어 있지만이 오류로 인해 여전히 실패하고 있습니다. 어떤 아이디어?UnsatisfiedLinkError "모든 액세스 권한이 있어도 액세스가 거부되었습니다."

답변

3

이 dll은 충분한 권한이 부여되지 않은 다른 dll을로드하려고합니다.

+0

흠 ... 그 시점에서로드가 원시 코드에서 발생하기 때문에 오류 메시지에 반영되지 않습니다. – UltraNurd

+0

예, 디렉토리에 libdb47.dll도있었습니다. cacls로 보조금을 지급하는 것이 트릭을 완료 한 것으로 보입니다. – UltraNurd

+1

이 문제를 겪고있는 사람들을위한 또 다른 가능성은 DLL 파일을 추출하기 위해 일부 jar 파일을 추출하기 때문에 올바른 권한을 사용하여 폴더에 추출해야합니다. 이 경우처럼 : https://github.com/xerial/sqlite-jdbc/issues/97 – Kelly

0

시스템 관리자로 실행하면 올바르게 작동합니다. 나는 똑같은 문제가 있었고 Eclipse를 관리자로 돌 렸으며 효과가 있었다.

관련 문제