java.nio.file.ProviderNotFoundException 与 jlink 创建运行时

Jam*_*ott 4 zip nio jlink

我正在努力采用它jlink来创建一个更小的运行时来嵌入免费软件包的 macOS 应用程序版本,并且我几乎让它可以工作(我的应用程序从大约 260MB 缩小到 90MB)。我遇到的问题是我的软件使用 ZIP 文件系统,当它尝试在使用 -createdjlink运行时运行时打开这样的文件系统时,在正常 OpenJDK 11 运行时正常工作的代码突然崩溃:

\n\n
java.nio.file.FileSystems.newFileSystem                  \njava.nio.file.ProviderNotFoundException: Provider not found\n
Run Code Online (Sandbox Code Playgroud)\n\n

我假设这是因为 jlink 无法知道 ZIP 文件系统支持应该包含在我的运行时中,因为我的代码没有\xe2\x80\x99t 明确提及它的任何类(它们通过 间接使用)java.nio

\n\n

那么有人知道我如何明确地告诉jlink包括它们吗?

\n

Jam*_*ott 6

当然,在发布这个问题后不久,我的 google-fu 有所改善,我找到了答案。在 JDK 11 中,jdk.zipfs是它自己的模块,包含此提供程序。所以我只需要把它添加到我的--add-modules列表中,它现在就可以工作了。