17.10 openjdk และ oracle jdk 8 และ 9 พารามิเตอร์ trustAnchors ต้องไม่ว่างเปล่า


21

ฉันเพิ่งติดตั้ง 17.10 ใน VM ใหม่ พยายามตั้งค่าสภาพแวดล้อมการพัฒนาเมื่อฉันเรียกใช้gradleหรือ./gradlewฉันได้รับข้อผิดพลาดต่อไปนี้:

* 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

นี่ไม่คำนึงถึงรุ่น gradle, รุ่น Java (ทั้ง openjdk และ oracle 8 และ 9 มีข้อผิดพลาด) และรุ่น shadowjar นี่ทำให้ฉันสรุปได้ว่ามันเกี่ยวข้องกับ Ubuntu มากกว่า gradle / openjdk / oracle ที่เกี่ยวข้อง

ฉันพยายามอัปเดตใบรับรอง CA ทั้งสองอย่างsudo update-ca-certificates -fและsudo apt install ca-certificates-java --reinstallไม่ได้แก้ปัญหาเลย ฉันได้เปลี่ยนกลับไปเป็นแบบทดสอบและทดลองแล้วปิดและเปิดอีกครั้งโดยไม่มีผลกระทบ

ปัญหาคืออะไรและฉันจะแก้ไขได้อย่างไร


มีปัญหาเดียวกันนี้และการถอนการติดตั้ง / ติดตั้งใหม่openjdk-8-jdkไม่ได้ผลสำหรับฉัน คุณมีความคิดอย่างไรกับการทำงานนี้? ฉันเรียกใช้autoremoveก่อนการติดตั้งopenjdk-8-jdkแล้วopenjdk-9-jdkแต่นั่นเป็นสิ่งเดียวที่อาจแตกต่างจากที่คุณพูด
Andy

เหมือนกัน. ฉันได้ลองเปลี่ยนลำดับทั้งหมดของเวอร์ชัน 8: jre, jdk และ oracle แล้ว
0atman

คำตอบ:


22

ฉันติดตั้งใหม่ทุกอย่างโดยใช้ apt-get และนั่นก็ไม่ได้แก้ปัญหา

วิธีแก้ปัญหาที่ฉันพบว่าใช้งานได้: ไปที่ Oracle และดาวน์โหลดรุ่น tar.gz ของ jdk-8 จากนั้นคัดลอกไฟล์ cacerts จากไฟล์นั้นไปยัง / etc / ssl / certs / java / cacerts


2
แปลกปัญหานี้ ขอบคุณที่แบ่งปันโซลูชันการทำงานของคุณ ฉันสิ้นสุดการคัดลอกไฟล์ cacerts จาก Ubuntu 16.04 ของฉันพร้อมกับการติดตั้ง OpenJDK 8 เพื่อให้มันใช้งานได้ น่าแปลกที่การcacertsติดตั้งด้วย OpenJDK 9 บน Ubuntu 17.10 ดูเหมือนจะไม่ว่างเปล่า (มันใหญ่กว่ารุ่นเก่ากว่า) แต่ก็ใช้งานไม่ได้
JeroenHoek

3
แทนที่จะคัดลอกการวาง certs เก่าคุณสามารถกำจัด java-commons และ jdk จากนั้นติดตั้ง jdk ใหม่ วิธีนี้จะสร้างใหม่ certs อย่างถูกต้อง
k0pernikus

1
นั่นเป็นทางออกเดียวที่ทำงานกับฉันบน Ubuntu 18.04 / OpenJDK 11
zergussino

1
ติดตั้งไม่ได้ทำงานให้ฉันทั้งบน Ubuntu 18.04 / 11 OpenJDK jdk-10.0.1_linux-x64_bin.tar.gzดังนั้นฉันดาวน์โหลด คุณพบcacertsในjdk-10.0.1/lib/security/cacerts
iGEL

สิ่งนี้ใช้ได้แม้ว่าการคัดลอกจากการติดตั้ง Windows JDK การทำความสะอาดและการติดตั้งใหม่ไม่ทำงาน (ด้วย openjdk 8, 9 หรือ 10) ฉันอยู่ใน WSL
FrankMonza

12

ฉันพบปัญหานี้เช่นกันเมื่อพยายามตั้งค่าเครื่องมือสร้าง scala (sbt) ในการติดตั้ง 17.10 ใหม่ของฉัน

ทางออกของฉันคือการล้าง:

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

(เพียงแค่การล้างและติดตั้ง jdk ใหม่ยังไม่เพียงพอฉันยังคงมีjavaคำสั่งหลังจากนั้นเท่านั้นโดยการกวาดล้างjava-commonที่หายไปและจากนั้นการติดตั้งใหม่ก็ใช้งานได้ฉันถือว่ามันเกี่ยวข้องกับca-certificates-java*แพคเกจที่ได้รับการกำจัดjava-common)

หลังจากนั้นฉันติดตั้งจาวาอีกครั้ง (ฉันเลือกเฉพาะ openjdk-9):

sudo apt install openjdk-9-jdk

สิ่งนี้ทริกเกอร์: Running hooks in /etc/ca-certificates/update.d...และเพิ่มไฟล์ใบรับรองจำนวนมาก ตอนนี้ sbt ที่สร้างขึ้นของฉันประสบความสำเร็จ:

$ 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
...  

ขอบคุณสำหรับสิ่งนี้ - แก้ไขปัญหาให้ฉัน ฉันมีไฟล์ cacerts ซึ่งว่างเปล่าตาม keytool และกำจัดและติดตั้งใหม่ตามที่คุณแนะนำ (jdk8 ในกรณีของฉัน) แก้ไขมัน
Brian Smith

สิ่งนี้ใช้ได้กับฉันด้วย Linux Mint 19 (ซึ่งติดตั้ง openjdk-11) และฉันต้องการใช้ openjdk-8
James

4

ฉันติดตั้งใหม่ทุกอย่างตั้งแต่เริ่มต้นอีกครั้งและปัญหานี้ได้หายไป ทั้งหมดที่ฉันไม่แตกต่างกันคือการติดตั้งก่อนที่จะติดตั้งopenjdk-8-jdkopenjdk-9-jdk

มันได้ผล. มีปัญหาการพึ่งพาที่แปลกหรือไม่


มันใช้งานได้สำหรับฉัน แต่ฉันต้องรีสตาร์ทระบบ โดยทั่วไปฉันทำการopenjdk-9-jdkติดตั้งแล้ว 8 ฉันถอนการติดตั้งทั้งสองและ redid มัน 8 - แล้ว - 9. ฉันยังคงทำงานอยู่sudo update-ca-certificates -fเสมอ ไม่ใช่เช้าและวันนี้ฉันเริ่มดาวน์โหลด Oracle JDK ก่อนที่มันจะเสร็จฉันก็ค้นพบงาน openjdk และดึงระดับเสียงสำเร็จ
foxx1337

2
java-commonฉันยังมีการล้าง ผมถือว่าเป็นปัญหาที่ติดตั้งผิดca-certificates-java; หนึ่งที่ได้รับการลบเช่นกันกับ java คอมมอนส์และในการติดตั้งใหม่ก็จะสร้างไฟล์ pem มากมาย ไม่จำเป็นต้องทำการติดตั้ง openjdk-8
k0pernikus

1

ฉันคัดลอกไฟล์ / etc / ssl / certs / java / cacerts จากข้อมูลสำรองของการติดตั้งรุ่นเก่า หากคุณมีบางอย่างเช่นนั้นอาจเป็นตัวเลือกที่ง่ายที่สุด เพียงให้แน่ใจว่าได้สำรองไฟล์ cacerts ดั้งเดิมในกรณีที่คุณประสบปัญหากับแอปพลิเคชั่นอื่น


1

Oracle เปลี่ยนรูปแบบของไฟล์ cacerts (จาก JKS เป็น PCKS12) ค่าเริ่มต้นรวม JDK ใน Ubuntu แล้วใช้ PCKS12 แต่คุณอาจใช้ JDK รุ่นเก่าที่ไม่สามารถอ่านได้ ฉันแปลงไฟล์ keystore ของฉันเป็น JKS โดยใช้ keytool นั่นเป็นสาเหตุที่วิธีแก้ปัญหาเพื่อคัดลอกอันที่เก่ากว่านั้นใช้ได้กับคนอื่นและทำไมคำตอบที่คุณยอมรับก็ใช้ได้เช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.