Java open_reader()中出现意外异常

Java open_reader()中出现意外异常,java,ubuntu,nginx,ssl-certificate,pdftk,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.s

我正在使用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)

您能帮我修复此错误吗。

问题是您的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中删除,最后在Ubuntu 18.04中从Ubuntu中删除

不幸的是,PDFTK的维护人员没有为Oracle/OpenJDK版本的Java提供端口。事实上,自2014年以来,PDFLAB的上游分布似乎没有变化。。。所以也许你应该找一个替代品

(或者使用fork:请参阅。但是,如果您依赖“死”项目的非官方/不受支持的fork,请仔细考虑可能出现的各种问题。)


另见:


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

在进一步搜索时,我发现此网站:

创建这样的符号链接

sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk

解决了这个问题

FileNotFoundException
的意思正是它听起来的意思。如果您还共享了负责的代码,可能会有所帮助。您缺少此文件:
/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre/lib/security/cacerts(没有此类文件或目录)
。在我的Kubuntu(18.04 LTS)下,由于在FS上具有快照写入权限,因此无法工作。它只在$HOME中的文件中有效。
sudo ln -s /snap/pdftk/current/usr/bin/pdftk /usr/bin/pdftk