我从Dockerfile构建映像:

FROM ubuntu
RUN apt-get update


然后将图像保存到本地计算机,例如,我得到了这个文件:

archive.ubuntu.com_ubuntu_dists_bionic_restricted_binary-amd64_Packages.lz4


我正在尝试在Java lz4-java中解压缩ubuntu仿生lz4文件:

 LZ4Factory factory = LZ4Factory.fastestInstance();
 byte[] encoded = Files.readAllBytes(Paths.get("<Path to file>"));
 final int compressedLength = data.length;
            LZ4Compressor compressor = factory.fastCompressor();
            byte[] restored = new byte[compressedLength];
            LZ4SafeDecompressor decompressor2 = factory.safeDecompressor();
            decompressor2.decompress(data, 0, compressedLength, restored, 0);


我使用这种依赖关系:

    <dependency>
        <groupId>org.lz4</groupId>
        <artifactId>lz4-java</artifactId>
        <version>1.5.1</version>
    </dependency>


但是我仍然得到这个异常:

Exception in thread "main" net.jpountz.lz4.LZ4Exception: Error decoding offset 4 of input buffer
    at net.jpountz.lz4.LZ4JNISafeDecompressor.decompress(LZ4JNISafeDecompressor.java:38)
    at net.jpountz.lz4.LZ4SafeDecompressor.decompress(LZ4SafeDecompressor.java:74)
    at org.whitesource.fs.Main.main(Main.java:89)

最佳答案

假设您的归档文件使用官方的LZ4帧格式,
您可能更喜欢this LZ4 Java version,它支持LZ4帧格式。

09-13 10:45