OSX Java App Bundle 在 HFS+ 而不是 APFS 上运行
OSX Java App Bundle runs on HFS+ but not APFS
我一直遇到这个问题,我发现网上没有相关信息,我希望得到一些帮助,因为过去几天我一直在研究这个问题,但没有任何线索。
为什么我的 java 应用突然停止支持 APFS?如果我将应用程序移动到非 APFS USB,它可以工作,但是当我将应用程序移动到格式化为 APFS 的 SSD 时,它停止工作。
当我检查应用程序日志时,发现由于某种原因,某些库在从 SSD 格式化为 APFS 运行 时未被应用程序正确 imported/recognized。为什么它在 APFS SSD 和 HFS+ usb/hard 驱动器中的表现不同?
我已经隔离了这个案例,发现只有APFS是公因数。我已经在其他设备上测试过它,那些 运行 High Sierra 没有 APFS 驱动器,那些 运行 Sierra 有一个尚未转换为 APFS 驱动器的 SSD,只有那些设备使用 APFS 文件系统格式的系统遇到问题。
附加信息:
- Java 应用程序已正确签名,它是个人分发的,而不是通过 App Store 分发的。
- 应用程序是使用 AppBundler 而非 JavaPackager 捆绑的。
- App 运行s 在 OSX 的早期版本上,并且已经在数百 Mac 设备上分发和测试,OSX 在 10.8 - 10.12 之间变化
- 无法识别的库是 apache 库,例如 commons-lang-2.6(我们还没有升级到 3)、commons-logging(必须手动将日志输出到桌面才能看到什么正在发生)。奇怪的是,应用程序能够正确导入sqlite库。
感谢您的浏览,如有任何建议,我们将不胜感激!
我已经设法解决了上述问题,但不确定原因。
解决方法:
将 commons.lang.2.6 更新为 commons.lang.3.6
目前,我希望它不会遇到除此之外的任何其他问题,但我只能猜测发生了什么。
我认为 APFS 缓存了 commons.lang.3.6 的副本并使用了该库而不是我自己的库,因此 class 加载程序试图找到 2.6 版本时出现问题。由于只有 APFS 会有缓存副本,因此它允许我的应用程序 运行 在 USB 上。
其实我不知道寻找自己问题答案的正确礼节,所以如果有什么需要更改的地方,请随时纠正我的post。
我一直遇到这个问题,我发现网上没有相关信息,我希望得到一些帮助,因为过去几天我一直在研究这个问题,但没有任何线索。
为什么我的 java 应用突然停止支持 APFS?如果我将应用程序移动到非 APFS USB,它可以工作,但是当我将应用程序移动到格式化为 APFS 的 SSD 时,它停止工作。
当我检查应用程序日志时,发现由于某种原因,某些库在从 SSD 格式化为 APFS 运行 时未被应用程序正确 imported/recognized。为什么它在 APFS SSD 和 HFS+ usb/hard 驱动器中的表现不同?
我已经隔离了这个案例,发现只有APFS是公因数。我已经在其他设备上测试过它,那些 运行 High Sierra 没有 APFS 驱动器,那些 运行 Sierra 有一个尚未转换为 APFS 驱动器的 SSD,只有那些设备使用 APFS 文件系统格式的系统遇到问题。
附加信息:
- Java 应用程序已正确签名,它是个人分发的,而不是通过 App Store 分发的。
- 应用程序是使用 AppBundler 而非 JavaPackager 捆绑的。
- App 运行s 在 OSX 的早期版本上,并且已经在数百 Mac 设备上分发和测试,OSX 在 10.8 - 10.12 之间变化
- 无法识别的库是 apache 库,例如 commons-lang-2.6(我们还没有升级到 3)、commons-logging(必须手动将日志输出到桌面才能看到什么正在发生)。奇怪的是,应用程序能够正确导入sqlite库。
感谢您的浏览,如有任何建议,我们将不胜感激!
我已经设法解决了上述问题,但不确定原因。
解决方法: 将 commons.lang.2.6 更新为 commons.lang.3.6
目前,我希望它不会遇到除此之外的任何其他问题,但我只能猜测发生了什么。
我认为 APFS 缓存了 commons.lang.3.6 的副本并使用了该库而不是我自己的库,因此 class 加载程序试图找到 2.6 版本时出现问题。由于只有 APFS 会有缓存副本,因此它允许我的应用程序 运行 在 USB 上。
其实我不知道寻找自己问题答案的正确礼节,所以如果有什么需要更改的地方,请随时纠正我的post。