17.10 openjdk 및 oracle jdk 8 및 9 trustAnchors 매개 변수는 비어 있지 않아야합니다.


21

새로운 VM에 17.10을 설치했습니다. 실행 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 버전에 관계없이입니다. 이것은 gradle / openjdk / oracle 관련이 아니라 Ubuntu 관련이라는 결론으로 ​​이어집니다.

둘 다, CA 인증서를 갱신 해봤 sudo update-ca-certificates -f하고 sudo apt install ca-certificates-java --reinstall, 어느 쪽도 아니는 문제를 해결한다. 나는 시도하고 테스트 한 것으로 되돌 렸으며 아무런 영향을 미치지 않고 기술을 껐다 다시 켭니다.

무엇이 문제이며 어떻게 해결합니까?


동일한 문제가 발생하여 제거 / 재설치가 openjdk-8-jdk작동하지 않습니다. 어떻게 작동하는지 아십니까? autoremove설치하기 전에를 실행 한 openjdk-8-jdk다음 openjdk-9-jdk님이 말한 것과 다를 수있는 유일한 방법입니다.
Andy

같은. 나는 jre, jdk 및 oracle 버전의 모든 순열을 시도했습니다.
0atman

답변:


22

apt-get을 사용하여 모든 것을 다시 설치했는데 문제가 해결되지 않았습니다.

내가 찾은 해결책 : Oracle로 이동하여 tar.gz 버전의 jdk-8을 다운로드하십시오. 그런 다음 cacerts 파일을 / etc / ssl / certs / java / cacerts로 복사하십시오.


2
이상한 문제입니다. 작업 솔루션을 공유해 주셔서 감사합니다. OpenJDK 8 설치로 Ubuntu 16.04에서 cacerts 파일을 복사 하여이 작업을 수행했습니다. 이상하게도 cacertsUbuntu 17.10에 OpenJDK 9와 함께 설치된 것은 비어 있지 않은 것 같습니다 (이전 버전보다 큼). 작동하지 않습니다.
JeroenHoek

3
오래된 인증서를 복사하여 붙여 넣는 대신 jdk뿐만 아니라 java-commons를 제거하고 jdk를 다시 설치할 수도 있습니다. 그렇게하면 인증서가 올바르게 재생성됩니다.
k0pernikus

1
즉 우분투 18.04에 나를 위해 / 오픈 JDK 11 일 유일한 해결책이다
zergussino

1
Ubuntu 18.04 / OpenJDK 11에서 재설치가 작동하지 않아서를 다운로드했습니다 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

새로운 17.10 설치에서 scala 빌드 도구 (sbt)를 설정하려고 할 때도이 문제가 발생했습니다.

내 솔루션 은 제거하는 것이 었습니다.

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

(jdk를 제거하고 다시 설치하는 것만으로는 충분하지 않았지만 그 후에도 여전히 java명령 이있었습니다. 제거하고 다시 설치 한 후에 만 java-common작동했습니다. ca-certificates-java*패키지와 관련이 있다고 가정합니다 java-common.

나중에 Java를 다시 설치했습니다 (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 파일이 있었고 제안한대로 제거하고 다시 설치 (내 경우에는 jdk8) 수정했습니다.
브라이언 스미스

이것은 Linux Mint 19 (openjdk-11이 설치되어 있음)와 함께 작동했으며 openjdk-8을 사용하고 싶었습니다.
James

4

모든 것을 처음부터 다시 설치했으며이 문제는 사라졌습니다. 내가 설치 openjdk-8-jdk하기 전에 다르게 설치했다 openjdk-9-jdk.

작동합니다. 이상한 의존성 문제가 있습니까?


그것은 또한 나를 위해 일했지만 시스템을 다시 시작해야했습니다. 기본적으로 나는 openjdk-9-jdk다음에 8을 인스톨했다. 나는 둘 다를 제거하고 그것을 8-9로 수정했다 sudo update-ca-certificates -f. 나는 또한 항상 계속 달리고 있었다 . 아침이 아니었고 오늘 Oracle JDK를 다운로드하기 시작했습니다. 완료하기 전에 openjdk 작품을 발견하고 gradle pulls가 성공적으로 완료되었습니다.
foxx1337

2
나는 또한 퍼지했다 java-common. 문제가 잘못 설치되었다고 가정합니다 ca-certificates-java. 하나는 자바 커먼즈와 함께 제거되고 재 삽입시 많은 pem 파일을 생성합니다. openjdk-8을 설치할 필요가 없습니다.
k0pernikus

1

이전 설치의 백업에서 / etc / ssl / certs / java / cacerts 파일을 복사했습니다. 그런 것이 있다면 아마도 가장 쉬운 방법 일 것입니다. 다른 응용 프로그램에 문제가 발생할 경우를 대비하여 원본 cacerts 파일을 백업하십시오.


1

Oracle은 cacerts 파일의 형식을 JKS에서 PCKS12로 변경했습니다. Ubuntu에 기본적으로 포함 된 JDK는 이미 PCKS12를 사용하지만 읽을 수없는 이전 JDK를 사용하고있을 것입니다. keytool을 사용하여 키 저장소 파일을 JKS로 변환했습니다. 그렇기 때문에 오래된 것을 복사하는 해결 방법이 다른 사람들에게 도움이되는 이유와 수락 된 답변도 효과가있는 이유입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.