【问题标题】:How to solve java import com.sun.nio.zipfs.ZipFileSystem?java import com.sun.nio.zipfs.ZipFileSystem如何解决?
【发布时间】:2022-01-02 20:05:57
【问题描述】:

我正在解决一个开源 java 项目的依赖关系,但我找不到这个导入属于哪个 jar,也许它属于一个特殊的 JDK?

import com.sun.nio.zipfs.ZipFileSystem;

你能帮帮我吗?

【问题讨论】:

  • 提供有关您的问题的更多详细信息。但这看起来像 jdk 问题,很可能您正在运行非 oracle jdk。 com.sun.** 应该来自 oracle jdk
  • 如果您完全删除了该导入,您将对项目有所帮助。 Here is the correct way 从 zip 文件创建文件系统。

标签: java nio sun


【解决方案1】:

据我所知,com.sun.nio.zipfs.ZipFileSystem 类不是官方 Java SE 库的一部分。

  • 在 Java 6 及更早版本中,该类不存在

  • 在 Java 7 和 Java 8 中,该类位于“演示”套件中。

  • 在 Java 9 及更高版本中,该类不再存在于“演示”套件中......但现在在 jdk.zipfs 模块中有一个名为 jdk.nio.zipfs.ZipFileSystem 的类。然而,该类没有被模块公开,它被声明为包私有。您应该使用FileSystems.getFileSystem 方法访问它。

因此,要将您的代码移植到 Java 9+,您需要将该模块添加到您的 Java 9+ 模块依赖项中(如果您的代码是模块化的)。然后删除ZipFileSystem 导入并将其替换为java.nio.FileSystem 的导入。最后更改您的代码,通过调用 FileSystems.getFileSystem 并使用方案为 jar: 的 URI 来获取 FileSystem 对象。

在 Java SE 文档中有更多关于 Zip Filesystem Provider 的信息;例如

【讨论】:

  • 非常感谢斯蒂芬
猜你喜欢
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 2020-05-24
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 2017-11-10
  • 2023-04-11
相关资源
最近更新 更多