sbt 0.13.8 URI有一个权限组件



在sbt项目中运行sbt时得到此错误。我有JDK 8和sbt 0.13.8。我可以运行activator命令没有问题,但我需要sbt工作,因为我的IDE (IntelliJ IDEA)使用它来加载项目。

E:workworkspaceknowlegeplay-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

activator添加到sbt存储库列表的URI缺少第三个斜杠。

打开C:Users .sbt [用户]库

添加第三个斜杠(即activator-launcher-local: 文件:///${activator.local.repository-${activator.home-${user.home}/)活化剂}/库},(组织)/(模块)/(scala_ [scalaVersion]/) (sbt_ [sbtVersion]/)(修订)/[型]s/工件。[ext])

我刚刚删除了C:Users[USER]中的。sbt文件夹并且游戏项目成功导入到intelllij中。

解决方案有点棘手(每次都需要重新插入斜杠)。详见:https://github.com/typesafehub/activator/issues/1037

这仍然是Windows的一个问题,修复方法是将file://替换为file://,这样做非常烦人,所以一个很好的解决方案是在项目根目录下设置一个简单的ant build.xml。

<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:devGitgit-bash.exe" spawn="true">
            <arg line="-c 'activator run'" />
        </exec>
    </target>
</project>

您可以单独运行fixsbt目标来执行文件替换,或者使用run目标来修复存储库文件,然后运行activator。本例使用giitbash shell来运行该命令,因此您需要为您的环境更改shell/路径。

相关内容

最新更新