Пакет приложений OSX Java работает на HFS+, но не на APFS

Я столкнулся с этой проблемой, которая, как мне кажется, не имеет информации в Интернете, и мне нужна помощь, поскольку я работал над этим в течение последних нескольких дней без каких-либо указаний.

Почему мое приложение Java внезапно перестает работать для APFS? Это работает, если я перемещаю приложение на USB-устройство без APFS, но когда я перемещаю приложение на SSD, отформатированный в APFS, оно перестает работать.

Когда я проверил журналы приложения, оказалось, что по некоторым причинам определенные библиотеки не импортируются / не распознаются приложением должным образом, когда оно запускается из SSD, отформатированного в APFS. Почему он ведет себя по-разному в SSFS APFS по сравнению с HFS+ USB / жесткий диск?

Я уже выделил случай и обнаружил, что только APFS является общим фактором. Я проверил его на других устройствах, на тех, которые запускают High Sierra без диска APFS, и на тех, которые запускают Sierra с SSD, который еще не был преобразован в диск APFS, и только те устройства, которые используют форматирование файловой системы APFS, сталкиваются с вопрос.

Дополнительная информация:

  • Приложение Java подписано надлежащим образом, оно распространяется лично, но не через App Store.
  • Приложение поставляется с помощью AppBundler, а не JavaPackager.
  • Приложение работает на предыдущих версиях OSX и было распространено и протестировано для сотен устройств Mac с OSX в диапазоне от 10,8 до 10,12
  • Библиотеки, которые почему-то не распознаются, - это библиотеки apache, например commons-lang-2.6 (мы еще не обновили до 3), commons-logging (пришлось выводить журналы вручную на рабочий стол, чтобы увидеть, что происходит). Как ни странно, приложение смогло правильно импортировать библиотеку sqlite.

Спасибо за внимание, и буду признателен за любые советы!

1 ответ

Решение

Мне удалось решить вышеуказанную проблему, но я не уверен, почему.

Решение: обновите commons.lang.2.6 до commons.lang.3.6

В настоящее время я надеюсь, что не будет возникать никаких других проблем, кроме этого, но я могу только догадываться, что происходило.

Я думаю, что APFS кэшировала копию commons.lang.3.6 и использовала эту библиотеку вместо моей, поэтому возникла проблема с загрузчиками классов, пытающимися найти версию 2.6. Поскольку только APFS будет иметь кэшированную копию, это позволит моему приложению работать на USB.


На самом деле я не знаю правильного этикета, чтобы узнать ответ на свой вопрос, поэтому, пожалуйста, не стесняйтесь исправлять мой пост, если мне нужно что-то изменить.

Другие вопросы по тегам