open_reader() 中的意外异常

Moh*_*med -1 java ubuntu nginx ssl-certificate pdftk

我在 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)
Run Code Online (Sandbox Code Playgroud)

经过多次研究,我发现问题来自 https 链接。当我使用带有https的 pdf 文件中的链接时,它不起作用例如:

sudo pdftk https://www.fifa.com/mm/document/fanfest/magazine/magazine09-06p.3en_3465.pdf output 1805.pdf
Run Code Online (Sandbox Code Playgroud)

你能帮我解决这个错误吗?

小智 7

我遇到了同样的问题,并尝试在已安装的 Java 版本之间切换,但没有效果。

进一步搜索时,我找到了这个网站:https : //wilransz.com/pdftk-on-ubuntu-18-04/

创建这样的符号链接

sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk
Run Code Online (Sandbox Code Playgroud)

修复了问题!

  • 在我的 Kubuntu (18.04 LTS) 下,由于在 FS 上写入的快照权限,它无法工作。它仅在 $HOME 中的文件中有效。 (2认同)