【问题标题】:Unable to use SevenZFile at Java6 to unzip 7z File无法在 Java6 中使用 SevenZFile 解压缩 7z 文件
【发布时间】:2018-04-27 13:58:27
【问题描述】:

我可以在 Java 7 和 java 8 中使用 org.apache.commons.compress.archivers.sevenz.SevenZFile 解压缩 7z 文件。但我无法通过使用 Java6 来解压。你能帮我用 Java 6 解决这个问题吗? Java6 找不到 SeekableByteChannel :(

您可以在下面找到示例代码:

SeekableInMemoryByteChannel inMemoryByteChannel = new 
 SeekableInMemoryByteChannel(targetArray);
    SevenZFile sevenZFile = new SevenZFile(inMemoryByteChannel);

【问题讨论】:

  • 正如您在documentation 中看到的那样,接口SeekableByteChannel 自Java 7 以来就存在。如果您的库依赖于它,它将无法与Java 6 一起使用。可能存在较旧的库版本哪个在 Java 6 下工作?
  • 这意味着 Java6 无法使用 SeekableByteChannel。我必须为此找到另一个解压缩库?
  • SeekableByteChannel 是 Java SDK 的一部分,但直到 Java 7 才出现。这意味着您的库不适用于 Java 6。但是您可以查找运行的同一库的先前版本在 Java 6 下。Apache 项目通常提供旧版本的下载。

标签: java compression unzip 7zip


【解决方案1】:

从 Apache Commons Compress 1.13 开始,它在运行时需要 Java 7。如果您需要 Java6 版本 1.12 或更早版本的支持(但可能具有较少的功能或一组不同的错误)。

在 7z 1.12 和更早的版本中,只允许读取文件,而不是任意流。迁移到 Java7 和使用 SeekableByteChannel 的机会允许支持从更通用的输入中读取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    相关资源
    最近更新 更多