Как разрешить приложению JAVA Web Start получить доступ к файловой системе MacOS Catalina, если оно запускается двойным щелчком по файлу JNLP? - java
======================================================================================================================================================

В macOS Catalina мы сталкиваемся со следующей проблемой: открытие приложений Java Web Start ведет себя по-разному, когда приложение запускается двойным щелчком по файлу JNLP и когда оно запускается двойным щелчком по ярлыку, установленному на рабочем столе.

В первом случае (двойной щелчок по загруженному файлу JNLP) приложение открывается без прав доступа к файловой системе - при попытке получить список каталогов в каталоге пользователя Desktop в коде JAVA всегда возвращается значение NULL. Пользователю не было предложено запрашивать какие-либо разрешения для доступа к файловой системе. Это не ожидаемое поведение.

Во втором случае (начиная с ярлыка на рабочем столе) пользователь сначала получает запрос о том, что приложение пытается получить доступ к файловой системе, и запрашивает разрешение. Когда пользователь разрешает приложению доступ к файлам - приложение правильно читает каталог рабочего стола пользователя. Это ожидаемое поведение.

Есть ли обходной путь для этого? Как мы можем заставить веб-запускать файловую систему доступа к приложениям на Catalina, если она запускается двойным щелчком по файлу JNLP (именно так приложение должно быть запущено хотя бы в первый раз)?

Я столкнулся с подобной проблемой при запуске устаревшего приложения .jnlp. Мне удалось обойти это, просто вызвав приложение из CLI (iTerm/Terminal/etc.):

```
# javaws filename.jnlp

```

Основная причина в том, что macOS 10.15 (Catalina) теперь требует, чтобы приложения, не принадлежащие Apple, были специально предоставлены разрешения "Полный доступ к диску". Проверьте [это](https://codeindex.ru/go/go_redirect?url=https%3A%2F%2Femacs.stackexchange.com%2Fquestions%2F53026%2Fhow-to-restore-file-system-access-in-macos-catalina) и [это](https://codeindex.ru/go/go_redirect?url=https%3A%2F%2Fapple.stackexchange.com%2Fquestions%2F371888%2Frestore-access-to-file-system-for-emacs-on-macos-catalina%3Fnewreg%3D097474bbcdaf465a9921530203ef58c3) для деталей. Используя объяснение, я добавил /usr/bin/javaws (и другие двоичные файлы java, такие как java и appletviewer) в "Полный доступ к диску", но это не помогло решить проблему.

Исходя из [старого потока](https://codeindex.ru/go/go_redirect?url=https%3A%2F%2Fforums.developer.apple.com%2Fthread%2F107546), кажется, что если путь к приложению не находится в /Applications/(в этом случае java и javaws находятся в /System/, а не в /Applications/), то Full Доступ к диску не соблюдается. Поэтому весьма вероятно, что Apple должна предоставить исправление, позволяющее запускать эти приложения из пользовательского интерфейса.