17.10 openjdk và oracle jdk 8 và 9, tham số trustAnchors phải không trống


21

Tôi vừa cài đặt 17.10 trong một máy ảo mới. Đang cố gắng thiết lập môi trường phát triển, khi tôi chạy gradlehoặc ./gradlewtôi gặp lỗi sau:

* What went wrong:
Error resolving plugin [id: 'com.github.johnrengelman.shadow', version: '2.0.0']
> Could not GET 'https://plugins.gradle.org/api/gradle/4.0/plugin/use/com.github.johnrengelman.shadow/2.0.0'.
   > java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

Đây là bất kể phiên bản gradle, phiên bản java (cả openjdk và oracle 8 và 9 đều có lỗi) và phiên bản Shadowjar. Điều này dẫn tôi đến kết luận rằng nó có liên quan đến Ubuntu chứ không liên quan đến gradle / openjdk / oracle.

Tôi đã thử cập nhật chứng chỉ CA, cả hai sudo update-ca-certificates -fsudo apt install ca-certificates-java --reinstall, cả hai đều không giải quyết được vấn đề. Tôi thậm chí đã hoàn nguyên về kỹ thuật đã thử và tắt nó đi và lại không có ảnh hưởng.

Vấn đề là gì và làm cách nào để khắc phục nó?


Có vấn đề tương tự, và việc gỡ cài đặt / cài đặt lại openjdk-8-jdkkhông hoạt động với tôi. Bất cứ ý tưởng làm thế nào bạn có được điều này làm việc? Tôi đã chạy một autoremovecài đặt trước khi cài đặt openjdk-8-jdkvà sau đó openjdk-9-jdk, nhưng đó là điều duy nhất có thể khác với những gì bạn nói.
Andy

tương tự. Tôi đã thử tất cả các hoán vị của các phiên bản 8: jre, jdk và oracle.
0atman

Câu trả lời:


22

Tôi đã cài đặt lại mọi thứ bằng apt-get và điều đó không giải quyết được vấn đề.

Giải pháp mà tôi thấy có hiệu quả: Truy cập Oracle và tải xuống phiên bản tar.gz của jdk-8. Sau đó sao chép tệp cacerts từ đó vào / etc / ssl / certs / java / cacerts


2
Vấn đề kỳ lạ này. Cảm ơn đã chia sẻ giải pháp làm việc của bạn. Cuối cùng tôi đã sao chép tệp cacerts từ Ubuntu 16.04 với cài đặt OpenJDK 8 để làm việc này. Điều kỳ lạ là, bản cacertscài đặt với OpenJDK 9 trên Ubuntu 17.10 dường như không trống (nó lớn hơn bản cũ), nó chỉ không hoạt động.
JeroenHoek

3
Thay vì sao chép dán các certs cũ, bạn cũng có thể lọc java-commons cũng như jdk, sau đó cài đặt lại jdk. Bằng cách đó, các certs sẽ được tái sinh đúng cách.
k0pernikus

1
Đó là giải pháp duy nhất hiệu quả với tôi trên Ubuntu 18.04 / OpenJDK 11
zergussino

1
Cài đặt lại không hoạt động với tôi trên Ubuntu 18.04 / OpenJDK 11, vì vậy tôi đã tải xuống jdk-10.0.1_linux-x64_bin.tar.gz. Bạn tìm thấy cacertstrongjdk-10.0.1/lib/security/cacerts
iGEL

Điều này hoạt động ngay cả khi sao chép từ cài đặt Windows JDK, làm sạch và cài đặt lại không hoạt động (với openjdk 8, 9 hoặc 10), tôi đang ở trên WSL
FrankMonza

12

Tôi cũng gặp phải vấn đề này khi cố gắng thiết lập công cụ xây dựng scala (sbt) trên bản cài đặt 17.10 mới.

Giải pháp của tôi là thanh trừng:

sudo apt purge openjdk-9-jdk openjdk-8-jdk java-common

(Chỉ cần thanh trừng và cài đặt lại jdk là không đủ, tôi vẫn có một javalệnh sau đó. Chỉ bằng cách thanh trừng java-commoncũng biến mất và sau đó cài đặt lại hoạt động. Tôi cho rằng nó liên quan đến ca-certificates-java*gói, nó bị thanh trừng java-common.)

Sau đó, tôi đã cài đặt lại java một lần nữa (tôi chỉ chọn cho openjdk-9):

sudo apt install openjdk-9-jdk

Điều này đã kích hoạt: Running hooks in /etc/ca-certificates/update.d...và thêm rất nhiều tệp cert. Bây giờ sbt của tôi được xây dựng đã thành công:

$ sbt
Getting org.scala-sbt sbt 1.1.0  (this may take some time)...
downloading https://repo1.maven.org/maven2/org/scala-sbt/sbt/1.1.0/sbt-1.1.0.jar ...
    [SUCCESSFUL ] org.scala-sbt#sbt;1.1.0!sbt.jar (657ms)
downloading https://repo1.maven.org/maven2/org/scala-sbt/main_2.12/1.1.0/main_2.12-1.1.0.jar
...  

Cảm ơn vì điều này - đã giải quyết vấn đề cho tôi. Tôi đã có một tập tin cacerts trống theo keytool, và thanh lọc và cài đặt lại như bạn đề xuất (jdk8 trong trường hợp của tôi) đã sửa nó.
Brian Smith

Điều này làm việc với tôi với Linux Mint 19 (đã cài đặt openjdk-11) và tôi muốn sử dụng openjdk-8
James

4

Tôi đã cài đặt lại mọi thứ từ đầu một lần nữa và vấn đề này đã biến mất. Tất cả tôi đã làm khác nhau là cài đặt openjdk-8-jdktrước khi cài đặt openjdk-9-jdk.

Nó hoạt động. Có bất kỳ vấn đề phụ thuộc kỳ lạ?


Nó cũng làm việc cho tôi, nhưng tôi phải khởi động lại hệ thống. Về cơ bản tôi đã thực hiện một instlal của openjdk-9-jdk, sau đó 8. Tôi đã gỡ cài đặt cả hai và làm lại nó 8 - sau đó - 9. Tôi cũng luôn luôn chạy sudo update-ca-certificates -f. Đó là buổi sáng và hôm nay tôi bắt đầu tải xuống Oracle JDK. Trước khi nó kết thúc, tôi phát hiện ra openjdk hoạt động và kéo thành công.
foxx1337

2
Tôi cũng phải thanh trừng java-common. Tôi cho rằng vấn đề đã được cài đặt sai ca-certificates-java; cái nào cũng được gỡ bỏ bằng java commons và khi cài đặt lại, nó tạo ra một loạt các tệp pem. Cài đặt openjdk-8 là không cần thiết.
k0pernikus

1

Tôi đã sao chép tệp / etc / ssl / certs / java / cacerts từ bản sao lưu của bản cài đặt cũ hơn. Nếu bạn có một cái gì đó như thế thì có lẽ đó là lựa chọn dễ nhất. Chỉ cần đảm bảo sao lưu tệp cacerts gốc trong trường hợp bạn gặp rắc rối với các ứng dụng khác.


1

Oracle đã thay đổi định dạng của tệp cacerts (từ JKS sang PCKS12), mặc định bao gồm JDK trong Ubuntu đã sử dụng PCKS12, nhưng có lẽ bạn đang sử dụng JDK cũ hơn mà không thể đọc được. Tôi đã chuyển đổi tệp kho khóa của mình sang JKS bằng keytool. Đó là lý do tại sao cách giải quyết để sao chép một cái cũ hơn làm việc cho người khác và tại sao câu trả lời được chấp nhận của bạn cũng hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.