web-dev-qa-db-fra.com

sbt 0.13.8 URI a un composant d'autorisation

J'obtiens cette erreur lors de l'exécution de sbt dans un projet sbt. J'ai JDK 8 et sbt 0.13.8. Je peux exécuter la commande activator sans problème mais j'ai besoin que sbt fonctionne car mon IDE (IntelliJ IDEA) l'utilise pour charger le projet.

E:\work\workspace\knowlege\play-scala-di>sbt
    Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
    Java.lang.IllegalArgumentException: URI has an authority component
    at Java.io.File.<init>(File.Java:423)
    at sbt.Classpaths$.sbt$Classpaths$$bootRepository(Defaults.scala:1758)
    at sbt.Classpaths$$anonfun$appRepositories$1.apply(Defaults.scala:1729)
    at sbt.Classpaths$$anonfun$appRepositories$1.apply(Defaults.scala:1729)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
            at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
            at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:34)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at sbt.Classpaths$.appRepositories(Defaults.scala:1729)
    at sbt.Classpaths$$anonfun$41.apply(Defaults.scala:1102)
    at sbt.Classpaths$$anonfun$41.apply(Defaults.scala:1102)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.EvaluateSettings$MixedNode.evaluate0(INode.scala:175)
    at sbt.EvaluateSettings$INode.evaluate(INode.scala:135)
    at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$submitEvaluate$1.apply$mcV$sp(INode.scala:69)
    at sbt.EvaluateSettings.sbt$EvaluateSettings$$run0(INode.scala:78)
    at sbt.EvaluateSettings$$anon$3.run(INode.scala:74)
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
    at Java.lang.Thread.run(Thread.Java:745)
    [error] Java.lang.IllegalArgumentException: URI has an authority component
25

L'URI que l'activateur ajoute à la liste des référentiels sbt manque une troisième barre oblique.

Ouvrez C:\Users\[USER] \. Sbt\repositories

Ajoutez une troisième barre oblique (c.-à-d. Activator-launcher-local: fichier: /// $ {activator.local.repository- $ {activator.home- $ {user.home} /.activator}/repository }, [organisation]/[module]/(scala_ [scalaVersion] /) (sbt_ [sbtVersion] /) [révision]/[type] s/artefact. [ext])

61
Jason Touhey

Je viens de supprimer le dossier .sbt dans C:\Users [USER]\et le projet de lecture a été importé avec succès dans intellij.

5
Chris

La solution est un peu plus délicate (vous devez réinsérer la barre oblique à chaque fois). Voir ici: https://github.com/typesafehub/activator/issues/1037

4
Jacob Eckel

C'est toujours un problème avec Windows et le correctif consiste à remplacer file: // par file: /// et cela est super ennuyeux, donc une bonne solution consiste à configurer une simple fourmi build.xml à la racine du projet.

<project name="someName" default="run" basedir=".">
    <description>
        Fix sbt repositories
    </description>
    <property name="sbtrepo" location="${user.home}/.sbt/repositories"/>
    <target name="fixsbt">
        <replace file="${sbtrepo}" token="file://$" value="file:///$"/>
    </target>
    <target name="run" depends="fixsbt">
        <exec executable="C:\dev\Git\git-bash.exe" spawn="true">
            <arg line="-c 'activator run'" />
        </exec>
    </target>
</project>

Vous pouvez soit exécuter la cible fixsbt seule pour remplacer le fichier, soit utiliser la cible d'exécution pour corriger le fichier des référentiels, puis exécuter l'activateur. Cet exemple utilise gitbash Shell pour exécuter la commande, vous devrez donc modifier le shell/chemin de votre environnement.

1
Ross Oreto