IDPF/W3 的 epubcheck.jar 工具正在扩展以涵盖 ePub 中的新可能性。因此,检查所有内容所需的库数量正在增加。这增加了完成单个 ePub 文件检查的运行时间。epubcheck v3 每个 epub 大约需要 3 秒,而 epubcheck v4 最多需要 6.5 秒。有大约两倍的底层库要加载。
因此,我一直在寻找保持 epubcheck 版本运行的方法,这样 JVM 就不必为每个文件启动和重新加载每个库。(我们有时必须一次检查数百个 epub。)
减少库加载开销和 JVM 启动时间的可能解决方案是 Drip 或 Nailgun,但为了加载库并在命令上调用 epubcheck,jar 文件都必须加载到类路径中。然后,com.adobe.epubcheck.tool.Checker
必须显式调用该类。
同时使用 Drip 和 Nailgun,我得到相同的 SAXParseException 错误:
org.xml.sax.SAXParseException;systemId: jar:file:/app-lib/epubcheck-4.0.2/epubcheck.jar!/com/adobe/epubcheck/schema/20/rng/container.rng; 行号:4;列号:71;架构的根元素必须有命名空间
这是一个验证在命令行上加载 JAR 文件的文件:
java -jar /app-lib/epubcheck-4.0.2/epubcheck.jar FILE.epub
我不知道问题可能是什么,特别是因为 Java 不是我的强项。