Ubuntu 17.10 Java 8 Sertifikat Kesalahan

10

Saya memiliki instalasi baru Ubuntu 17.10, di mana saya menginstal paket oracle-java8-installer (dari PPA).

Tetapi ketika saya mencoba untuk mengkompilasi proyek ion menggunakan "ionic cordova build android", ia melempar kesalahan ini:

    Exception in thread "main" 
    javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1916)
        at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1899)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1420)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
        at org.gradle.wrapper.Download.downloadInternal(Download.java:60)
        at org.gradle.wrapper.Download.download(Download.java:45)
        at org.gradle.wrapper.Install$1.call(Install.java:62)
        at org.gradle.wrapper.Install$1.call(Install.java:48)
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:69)
        at org.gradle.wrapper.Install.createDist(Install.java:48)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
    Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:91)
        at sun.security.validator.Validator.getInstance(Validator.java:179)
        at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:312)
        at sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:171)
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:184)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:961)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
        ... 14 more
    Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
        at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200)
        at java.security.cert.PKIXParameters.<init>(PKIXParameters.java:120)
        at java.security.cert.PKIXBuilderParameters.<init>
    (PKIXBuilderParameters.java:104)
        at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:89)
        ... 26 more

Saya terhubung ke internet dan saya mencoba:

$ sudo update-ca-certificates -f
$ sudo apt install --reinstall ca-certificates-java

... dan juga instal ulang npm, ionic, java dan gradle, semuanya tanpa hasil.

sunting: Saya juga telah mengekspor ANDROID_HOME dan JAVA_HOME dalam .bashrc, dan Android Studio diinstal. Saya telah mencoba untuk membangun proyek pada mesin yang berbeda dan berfungsi dengan baik. Saya tidak dapat mencoba menggunakan OpenJDK karena tidak bekerja dengan baik dengan Android Studio.

Leonardo Amorim
sumber

Jawaban:

26

Mencoba

sudo dpkg --purge --force-depends ca-certificates-java

diikuti oleh

sudo apt-get install ca-certificates-java

untuk mendapatkan cacerts yang rusak diperbaiki.
Bagi saya, ini memperbaikinya.
Semoga berhasil!

Zod
sumber
Bekerja untuk saya juga untuk openjdk-9! Ada penjelasan mengapa ini bekerja ketika --reinstalldan secara manual menjalankan skrip postinstall tidak? Saya sangat tertarik untuk referensi di masa mendatang. Terima kasih!
Andy
1
YA TUHAN. Saya sudah mencari jawaban ini selama berminggu-minggu. Setiap jawaban lain untuk pertanyaan ini saya temukan tidak melakukan apa pun - sama sekali tidak ada. Ini bekerja dengan sempurna. Sesuatu tampaknya sangat rusak dengan sertifikat ini di Ubuntu 17.10.
Dan
Memperbaiki Jenkins di 17.10 juga. Terima kasih (dan
ditingkatkan
Terima kasih banyak bekerja untuk saya dengan gradle (4.5.1) dan open-jdk-9. Tidak bekerja dengan oracle-jdk-9 sekalipun.
Pabi
Solusi untuk Ubuntu 18.04. Saya menginstal openjdk versi 11. Karena Android saya juga harus menginstal openjdk 8. Untuk alasan yang tidak diketahui, file cacerts yang diinstal oleh openjdk 11 tidak berfungsi dengan openjdk 8. Saya harus menghapus kedua jdks dan menginstal hanya versi 8 dan kemudian membuat ulang cacerts mengajukan.
Greg Dan