Неожиданное исключение в 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. Однако тщательно продумайте различные проблемы, которые могут возникнуть если вы зависите от неофициального / неподдерживаемого форка "мертвого" проекта.)


Смотрите также:

Другие вопросы по тегам