Java open_reader()中出现意外异常
我正在使用ubuntu 16.04中的pdftk库合并几个pdf文件。一切正常,当我安装SSL证书时,出现以下错误: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
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,请仔细考虑可能出现的各种问题。)
另见:
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