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

새로운 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, 어느 쪽도 아니는 문제를 해결한다. 나는 시도하고 테스트 한 것으로 되돌 렸으며 아무런 영향을 미치지 않고 기술을 껐다 다시 켭니다.

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



답변

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

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


답변

새로운 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
...  


답변

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

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


답변

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


답변

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


답변