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


0

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

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

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

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

  •  47
  •  1
  • 11 май 2020 2020-05-11 10:17:22

1 ответ

0

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

# javaws filename.jnlp

Основная причина в том, что macOS 10.15 (Catalina) теперь требует, чтобы приложения, не принадлежащие Apple, были специально предоставлены разрешения "Полный доступ к диску". Проверьте это и это для деталей. Используя объяснение, я добавил /usr/bin/javaws (и другие двоичные файлы java, такие как java и appletviewer) в "Полный доступ к диску", но это не помогло решить проблему.

Исходя из старого потока, кажется, что если путь к приложению не находится в /Applications/(в этом случае java и javaws находятся в /System/, а не в /Applications/), то Full Доступ к диску не соблюдается. Поэтому весьма вероятно, что Apple должна предоставить исправление, позволяющее запускать эти приложения из пользовательского интерфейса.

  • 11 май 2020 2020-05-11 10:17:23