Неожиданное исключение в open_reader()
Я использую библиотеку pdftk в Ubuntu 16.04, чтобы объединить несколько 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
Не могли бы вы помочь мне исправить эту ошибку.
1 ответ
У меня была такая же проблема, и я играл с переключением между установленными версиями 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 был удален из RedHat в RHEL 7 ( еще в 2011 году!), И, наконец, был удален из Ubuntu в Ubuntu 18.04.
К сожалению, сопровождающие для PDFTK не сделали доступным порт для версий Oracle / OpenJDK Java. На самом деле, с 2014 года не было изменений в дистрибутиве upstream от PDFLabs... так что, возможно, вам стоит искать альтернативу.
(Или используйте вилку: см. https://askubuntu.com/questions/1028522/how-can-i-install-pdftk-in-ubuntu-18-04-bionic. Однако тщательно продумайте различные проблемы, которые могут возникнуть если вы зависите от неофициального / неподдерживаемого форка "мертвого" проекта.)
Смотрите также: