我在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链接。
当我使用pdf文件中的链接时, https 它不起作用例如:
sudo pdftk https://www.fifa.com/mm/document/fanfest/magazine/magazine09-06p.3en_3465.pdf output 1805.pdf
你可以帮我解决这个错误。
答案 0 :(得分:1)
我遇到了同样的问题,并且尝试在已安装的Java版本之间进行切换,但是没有效果。
在进一步搜索时,我发现此站点: https://wilransz.com/pdftk-on-ubuntu-18-04/
创建这样的符号链接
sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
解决了该问题!
答案 1 :(得分:0)
问题是您的GCJ Java安装不完整或损坏。 &#34; cacerts&#34;应该出现在......
的文件/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代码库中的dropped弃用了......从GCC 7.1开始。
GCJ工具链已从RHEL 7(back in 2011!)中的RedHat中删除,最终在Ubuntu 18.04中从Ubuntu中删除。
不幸的是,PDFTK的维护者没有为Oracle / OpenJDK版本的Java提供端口。事实上,自2014年以来,PDFLabs的上游发行似乎没有变化......所以也许您应该寻找替代方案。
(或者使用fork:请参阅https://askubuntu.com/questions/1028522/how-can-i-install-pdftk-in-ubuntu-18-04-bionic。但是,如果您依赖于非官方/不支持的&#34; dead&的分支,请仔细考虑可能出现的各种问题#34;项目。)
另见: