![](/img/trans.png)
[英]XML reader error: unexpected character content exception while invoking webservice
[英]Unexpected Exception in open_reader()
我在 ubuntu 16.04 中使用 pdftk 库来合并几个 pdf。 一切正常,当我安装 SSL 证书时出现此错误:
Error: Unexpected Exception in open_reader()
java.lang.RuntimeException: java.lang.RuntimeException: error instantiating
default socket factory: java.security.KeyManagementException:
java.security.KeyStoreException: java.io.FileNotFoundException:
/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre/lib/security/cacerts (No such file or
directory)
at javax.net.ssl.SSLSocketFactory$ErrorSocketFactory.createSocket(libgcj.so.16)
at gnu.java.net.protocol.http.HTTPConnection.getSocket(libgcj.so.16)
at gnu.java.net.protocol.http.HTTPConnection.getOutputStream(libgcj.so.16)
at gnu.java.net.protocol.http.Request.dispatch(libgcj.so.16)
at gnu.java.net.protocol.http.HTTPURLConnection.connect(libgcj.so.16)
at gnu.java.net.protocol.http.HTTPURLConnection.getInputStream(libgcj.so.16)
at java.net.URL.openStream(libgcj.so.16)
at pdftk.com.lowagie.text.pdf.RandomAccessFileOrArray.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PRTokeniser.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
Caused by: java.lang.RuntimeException: error instantiating default socket
factory: java.security.KeyManagementException: java.security.KeyStoreException:
java.io.FileNotFoundException: /usr/lib/jvm/java-1.5.0-gcj-5-
amd64/jre/lib/security/cacerts (No such file or directory)
at javax.net.ssl.SSLSocketFactory.getDefault(libgcj.so.16)
at javax.net.ssl.HttpsURLConnection.getDefaultSSLSocketFactory(libgcj.so.16)
at javax.net.ssl.HttpsURLConnection.getSSLSocketFactory(libgcj.so.16)
经过多次研究,我发现问题来自 https 链接。 当我使用带有https的 pdf 文件中的链接时,它不起作用例如:
sudo pdftk https://www.fifa.com/mm/document/fanfest/magazine/magazine09-06p.3en_3465.pdf output 1805.pdf
你能帮我解决这个错误吗?
我遇到了同样的问题,并尝试在已安装的 Java 版本之间切换,但没有效果。
进一步搜索时,我找到了这个网站: https : //wilransz.com/pdftk-on-ubuntu-18-04/
创建这样的符号链接
sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
修复了问题!
问题是您的 GCJ Java 安装不完整或损坏。 应该出现在...的“cacerts”文件
/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre/lib/security/cacerts
... 不见了。 根据 Ubuntu 包搜索,在 Ubuntu 16.04 中,该文件应该是libgcj16
包的一部分。 所以尝试使用apt
安装该软件包。
真正的问题是 PDFTK 依赖于旧的 GCJ Java 工具链。 GCJ 几乎没有得到维护,最终被弃用并从 GCC 代码库中删除……从 GCC 7.1 开始。
GCJ 工具链在 RHEL 7 中从 RedHat 中删除(早在 2011 年!),最终在 Ubuntu 18.04 中从 Ubuntu 中删除。
不幸的是,PDFTK 的维护者没有为 Java 的 Oracle / OpenJDK 版本提供端口。 事实上,自 2014 年以来,PDFLabs 的上游发行版似乎没有发生任何变化……所以也许您应该寻找替代品。
(或者使用叉子:参见https://askubuntu.com/questions/1028522/how-can-i-install-pdftk-in-ubuntu-18-04-bionic 。但是,仔细考虑可能出现的各种问题如果您依赖于“死”项目的非官方/不受支持的分支。)
也可以看看:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.