XZ for Java 旨在成为纯 Java 中 XZ 数据压缩的完整实现。
特征:
线程化已在计划中,但尚不清楚何时实施。
主要源代码与 Java 8 及更高版本兼容,但也有适用于 Java 9 或更高版本的类(module-info.java 和速度优化)。默认构建选项需要 OpenJDK 11 或更高版本,并创建 Java 8 兼容的二进制文件。
所有输出文件都进入build
目录。
ant
来编译类并创建 JAR 文件。ant doc
以构建 javadoc HTML 文档。ant -projecthelp
查看所有可用的目标。可重复的构建应该是可能的。需要指定一个时间戳,该时间戳将用于 JAR 元数据中的文件修改时间。时间戳使用本地时区存储,因此最好将其覆盖为 GMT/UTC。在 POSIX 系统上,以下命令是等效的:
$ ANT_OPTS=-Duser.timezone=GMT
ant -Dant.tstamp.now.iso=2024-07-29T14:10:26Z
$ SOURCE_DATE_EPOCH=1722262226 TZ=UTC0 ant
当 Git 存储库可用时,使用提交者日期是获取合理值的一种方法:
$ SOURCE_DATE_EPOCH=$(git log -n1 --pretty=%ct) TZ=UTC0 ant
如果您使用的 Ant 版本早于 1.10.2:
编辑build.xml
并从
元素中删除modificationtime="${timestamp}"
属性。
如果您使用的 Ant 版本早于 1.9.8:
编辑build.xml
并从
标记中删除发布属性,即删除所有出现的这两行:
release="${sourcever}"
release="${sourcever9}"
上述的缺点是,将使用-source
和-target
选项而不是--release
。
如果您使用的 OpenJDK 版本早于 9:
要使用 OpenJDK 8 进行构建,请在ant
命令行上使用-Djava8only=true
。那么需要 Java >= 9 的文件将不会被构建,并且xz.jar
将不会是模块化 JAR。
如果您使用的 OpenJDK 版本早于 8:
不再支持这些版本。尝试 XZ for Java 1.9,它与 Java 5 兼容,只需要编辑build.properties
即可构建。
如果您不能或不想使用 Ant,只需编译src
目录下的所有 .java 文件(可能会跳过演示文件src/*.java
)。为了模块支持和速度优化 (Java >= 9),还编译src9
目录下的所有 .java 文件。
您可以使用 XZEncDemo 测试压缩,它从标准输入压缩到标准输出:
java -jar build/jar/XZEncDemo.jar < foo.txt > foo.txt.xz
您可以使用 XZDecDemo 测试解压,它解压到标准输出:
java -jar build/jar/XZDecDemo.jar foo.txt.xz