sbt 0.13.8 URI has an authority component
Asked Answered
P

4

25

I get this error when running sbt in a sbt project. I have JDK 8 and sbt 0.13.8. I can run activator command without a problem but I need sbt working because my IDE (IntelliJ IDEA) uses it to load the project.

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
Pup answered 3/6, 2015 at 15:12 Comment(3)
Would you share build.sbt, please?Twoedged
I got rid of it when deleted ~/.sbt/ folder in your profile folder.Sakti
Thanks for your question! The Jason Touhey's answer helped me.Exhibitive
B
61

The URI that activator adds to sbt repository list is lacking a third slash.

Open C:\Users\[USER]\.sbt\repositories

Add a third slash (i.e. activator-launcher-local: file:///${activator.local.repository-${activator.home-${user.home}/.activator}/repository}, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/artifact.[ext])

Backhanded answered 9/6, 2015 at 2:59 Comment(5)
Thanks, there were two "file://" that I had to change to "file:///"Suez
Hi I have the same problem and I think that it does not worth another question: how can I chnage that? I mean file:// to file:///Monostylous
Was trying to get the 2.4.1 play framework up and running using the example java app. Activator was having similar issues and now works thanks to the additional slash.Verity
If you don't have the ~/.sbt/repositories file, delete the ~/.sbt/ dir and run activator again. This should create it for you. Then adding the / does fix this issue.Absa
saved hours of useless troubleshooting. posts like this are invaluable. i wonder how these issues come about.Idellaidelle
S
5

I just removed the .sbt folder in C:\Users[USER]\ and the play project was imported successfully into intellij.

Sumatra answered 18/6, 2015 at 17:11 Comment(0)
O
4

The solution is a bit trickier (you need to re-insert the slash every time). See here: https://github.com/typesafehub/activator/issues/1037

Olivares answered 10/6, 2015 at 9:17 Comment(2)
Yes I have to do this every day, whats the solution for this?Camail
I don't have a file called repositories in my .sbt folder I am using activator 1.3.5Lucania
L
1

This is still an issue with Windows and the fix is to replace file:// with file:/// and doing so is super annoying so a good workaround is to setup a simple ant build.xml in the project root.

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

You can either run the fixsbt target alone to do the file replace, or use the run target to fix the repositories file and then run activator. This example uses gitbash shell to run the command so you'll need to change the shell/path for your environment.

Locklear answered 31/8, 2016 at 17:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.