J'ai installé SBT via un terminal avec les commandes suivantes:
echo "deb https://dl.bintray.com/sbt/debian /" | Sudo tee -a /etc/apt/sources.list.d/sbt.list
Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
Sudo apt-get update
Sudo apt-get install sbt
sur mon Ubuntu 18.04 et avec la version Java:
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.18.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)
L’installation a réussi, mais lorsque j’ai essayé de démarrer SBT
via un terminal, j’ai
https://repo.scala-sbt.org/scalasbt/ivy-snapshots/org.scala-sbt/sbt/1.1.6/ivys/ivy.xml
::::::::::::::::::::::::::::::::::::::::::::::
:: UNRESOLVED DEPENDENCIES ::
::::::::::::::::::::::::::::::::::::::::::::::
:: org.scala-sbt#sbt;1.1.6: not found
::::::::::::::::::::::::::::::::::::::::::::::
:::: ERRORS
Server access Error: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty url=https://repo1.maven.org/maven2/org/scala-sbt/sbt/1.1.6/sbt-1.1.6.pom
Server access Error: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty url=https://repo1.maven.org/maven2/org/scala-sbt/sbt/1.1.6/sbt-1.1.6.jar
Server access Error: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty url=https://repo.scala-sbt.org/scalasbt/maven-releases/org/scala-sbt/sbt/1.1.6/sbt-1.1.6.pom
Server access Error: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty url=https://repo.scala-sbt.org/scalasbt/maven-releases/org/scala-sbt/sbt/1.1.6/sbt-1.1.6.jar
Server access Error: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty url=https://repo.scala-sbt.org/scalasbt/maven-snapshots/org/scala-sbt/sbt/1.1.6/sbt-1.1.6.pom
Server access Error: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty url=https://repo.scala-sbt.org/scalasbt/maven-snapshots/org/scala-sbt/sbt/1.1.6/sbt-1.1.6.jar
Server access Error: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty url=https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/1.1.6/ivys/ivy.xml
Server access Error: Java.lang.RuntimeException: Unexpected error: Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty url=https://repo.scala-sbt.org/scalasbt/ivy-snapshots/org.scala-sbt/sbt/1.1.6/ivys/ivy.xml
Qu'est-ce qui ne va pas?
Mettre à jour
developer@monad:~$ Sudo apt-get purge openjdk-8-jdk Java-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
openjdk-11-jre-headless : Depends: ca-certificates-Java but it is not going to be installed
Depends: Java-common (>= 0.28) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
Liste de la version Java installée:
developer@monad:~$ update-Java-alternatives --list
Java-1.11.0-openjdk-AMD64 1101 /usr/lib/jvm/Java-1.11.0-openjdk-AMD64
Java-1.8.0-openjdk-AMD64 1081 /usr/lib/jvm/Java-1.8.0-openjdk-AMD64
Mise à jour 2
Sudo apt-get install ca-certificates-Java
Reading package lists... Done
Building dependency tree
Reading state information... Done
ca-certificates-Java is already the newest version (20170930ubuntu1).
ca-certificates-Java set to manually installed.
The following packages were automatically installed and are no longer required:
libice-dev libsm-dev libxt-dev
Use 'Sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
La cause première est un conflit entre openjdk-11-jdk (qui est la valeur par défaut dans Ubuntu 18.04) et les paramètres des packages sbt. Il a déjà été corrigé dans Debian et sera prochainement inclus dans Ubuntu. En attendant, la solution la plus simple consiste à rétrograder Java en version 8. Les autres solutions utilisant ca-certificates-Java
sont beaucoup plus compliquées.
Commencez par supprimer les paquets en conflit:
Sudo apt-get remove --purge openjdk* Java-common default-jdk
Sudo apt-get remove --purge sbt
Sudo apt-get autoremove --purge
Vérifiez que vous avez bien supprimé tous les paquets associés en:
Sudo update-alternatives --config Java
Le système vous demandera il n'y a pas de Java disponible pour configurer , sinon cette solution de contournement échoue .
Puis réinstallez les paquets requis:
Sudo apt-get install openjdk-8-jdk sbt
Testez par:
sbt compile
Le problème est Java-certificates donc vous devez exécuter ces commandes:
$ Sudo apt-get purge openjdk-8-jdk Java-common
$ Sudo apt-get install openjdk-8-jdk
$ sbt
Cela a résolu le problème pour moi.
Sudo update-ca-certificates -f
Je vous recommanderais d'installer Java/Scala/SBT de manière totalement indépendante des packages de système d'exploitation. Peu importe (ou ne devrait pas l'être!) Pour un développeur quelle version spécifique de Java a été installée par apt-get
, yum
ou autre.
Du point de vue du développeur, il peut même être judicieux de tester votre application sous plusieurs versions de Java. J'ai déjà vu cette situation auparavant: "ça marche" sous Java 1.8.x mais "ça échoue" sous Java 1.8.y.
Ainsi, du point de vue des développeurs, vous seriez intéressé par les versions rapides de Java, afin de vous assurer rapidement que tout fonctionne correctement sous ces différentes versions, quelle que soit la version spécifique installée sur votre version du système d'exploitation.
Si vous avez aimé l'idée, voici comment cela fonctionne:
$HOME/tools
. J'ai un script qui installe automatiquement une certaine version du JDK pour vous: https://github.com/frgomes/bash-scripts/blob/master/scripts/user-install/install-Java.shvirtualenv
-. C'est plus facile que vous ne le pensez et vous n'avez même pas besoin de virtualenv
. Tout ce dont vous avez besoin est de source
un script Shell qui s'exécute au moment de la connexion et qui définit Java_HOME
, pointant vers une version donnée de Java, sous votre $HOME/tools
. Voici un exemple: https://github.com/frgomes/bash-scripts/blob/master/bashrc-virtualenvs/j8s12/bin/postactivateDans mon cas, je l'ai résolu en supprimant .m2
, .ivy
& .sbt
. La prochaine fois que j'ai exécuté sbt
, tout a été corrigé.
Je crois que je me suis cassé la question quand je jouais avec les dépendances en cache ou quelque chose d'autre.