在 macOS Catalina 中,我們遇到以下問題:通過雙擊 JNLP 文件啟動應用程序和通過雙擊桌面上安裝的快捷方式啟動應用程序時,打開 Java Web Start 應用程序的行為不同。在第一種情況下(雙擊下載的 JNLP 文件)應用程序在沒有訪問文件系統的權限的情況下打開 - 嘗試在 JAVA 代碼中獲取用戶桌面目錄中的目錄列表始終返回 null。不會向用戶提示詢問訪問文件系統的任何權限。這不是預期的行為。在第二種情況下(從桌面快捷方式啟動),首先提示用戶應用程序正在嘗試訪問文件系統并請求權限。當用戶允許應用程序訪問文件時 - 應用程序正確讀取用戶的桌面目錄。這是預期的行為。有解決方法嗎?如果通過雙擊 JNLP 文件啟動 Web 啟動應用程序,我們如何才能訪問 Catalina 上的文件系統(這是應用程序至少第一次啟動的方式)?
4 回答

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
我在運行舊版 .jnlp 應用程序時遇到了類似的問題。我只需從 CLI(iTerm/Terminal/etc.)調用應用程序就可以解決這個問題:
#?javaws?filename.jnlp
根本原因是 macOS 10.15 (Catalina) 現在要求非 Apple 應用程序被專門授予“完全磁盤訪問”權限。我將 /usr/bin/javaws (以及其他 java 二進制文件,例如 java 和 appletviewer)添加到“完整磁盤訪問”,但這并沒有解決問題。
基于較舊的線程,似乎如果應用程序的路徑不在 /Applications/ 下(在這種情況下,java 和 javaws 位于 /System/ 下而不是 /Applications/ 下),則不支持完全磁盤訪問。因此,Apple 很可能需要提供修復程序,以允許從 UI 運行這些應用程序。

一只萌萌小番薯
TA貢獻1795條經驗 獲得超7個贊
我在 OSX Catalina 10.15.7 上遇到了同樣的問題。我能夠通過首先設置 JAVA_HOME 來啟動 jnlp 文件。
export JAVA_HOME=$(/usr/libexec/java_home) javaws /path/to/file.jnlp
添加回答
舉報
0/150
提交
取消