在Nailgun或Drip

时间:2018-04-12 19:37:56

标签: java jar epub nailgun

IDPF / W3的epubcheck.jar工具正在扩展,以涵盖ePub中的新可能性。因此,检查所有内容所需的库数量正在增加。这会增加运行时间以完成对单个ePub文件的检查。 epubcheck v3每个epub大约需要3s,而epubcheck v4大约需要6.5s。加载的底层库大约有两倍。

因此,我一直在研究如何保持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; lineNumber:4; columnNumber:71;模式的根元素必须具有命名空间

这是在一个文件上验证只需在命令行上加载JAR文件:

java -jar /app-lib/epubcheck-4.0.2/epubcheck.jar FILE.epub

我对这个问题可能会感到茫然,特别是因为Java不是我的强项。

1 个答案:

答案 0 :(得分:0)

事实证明,Red Hat有自己的SAX解析器库版本,它正在踩踏epubcheck中的那个。我正在使用类路径中包含的系统库启动Drip和Nailgun。

在没有共享系统库的情况下启动Nailgun(或Drip)会删除SAXParseException错误。

对于Nailgun:

java -cp "/usr/share/java/nailgun-server-0.9.3-SNAPSHOT.jar:/app-lib/epubcheck-4.0.2/*:/app-lib/epubcheck-4.0.2/lib/*" com.martiansoftware.nailgun.NGServer 127.0.0.1

然后,对于NG客户端:

ng com.adobe.epubcheck.tool.Checker FILE.epub

滴水:

drip -cp "/app-lib/epubcheck-4.0.2/*:/app-lib/epubcheck-4.0.2/lib/*" com.adobe.epubcheck.tool.Checker FILE.epub

对于它的价值,Drip实际上没有做我需要的事情,因为预留JVM旋转了Java设置和类路径预定义,但类的实例仍然导致库从头开始装载。它的速度与" java"完全一样。命令。

Nailgun第一次全程运行(5-7秒),然后在后续运行中更快(0.8-1.3秒)。