2017-06-13 50 views
0

我有這個文件:的AccessControlException:訪問被拒絕可讀文件

➜ ✗ ll ltr /Users/eladb/WorkspaceQa/sdk-service/src/main/resources/convert_conditions.sh 

-rwxrwxrwx 1 eladb eng 882B Jun 11 16:38 /Users/eladb/WorkspaceQa/sdk-service/src/main/resources/convert_conditions.sh 

我嘗試從Java閱讀:

 new FileInputStream(new File("/Users/eladb/WorkspaceQa/sdk-service/src/main/resources/convert_conditions.sh")); 

,但我得到一個錯誤:

java.security.AccessControlException: access denied ("java.io.FilePermission" "/Users/eladb/WorkspaceQa/sdk-service/src/main/resources/convert_conditions.sh" "read") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) ~[?:1.8.0_91] 
    at java.security.AccessController.checkPermission(AccessController.java:884) ~[?:1.8.0_91] 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) ~[?:1.8.0_91] 
    at java.lang.SecurityManager.checkRead(SecurityManager.java:888) ~[?:1.8.0_91] 
    at java.io.FileInputStream.<init>(FileInputStream.java:127) ~[?:1.8.0_91] 

爲什麼每個人都有該文件的讀取權限?

+0

你不是在命令行上從一個簡單的java程序運行這個java行,是嗎?看起來你啓用了'SecurityManager',所以根本問題可能在配置中的任何地方。準確的情況是什麼? –

回答

0

操作系統的文件權限與它無關。查看堆棧跟蹤,或者確實是異常的Javadoc。這個異常來自Java安全管理器,而不是操作系統。您正在安全管理器下運行(爲什麼?),並且您沒有授予您在.policy文件中訪問該文件的權限。

+0

@HuguesMoreau我在二十年前就明白了: - | – EJP

+0

謝謝。我需要使用安全管理器來從另一個第三方Java類捕獲exitCode。我怎樣才能做到這一點? –

+0

您需要爲您的.policy文件添加一個'FilePermission'。在例外情況下,語法實際上給了你。 – EJP

相關問題