sbt 0.13.8 URI 有一个权限组件

Posted

技术标签:

【中文标题】sbt 0.13.8 URI 有一个权限组件【英文标题】:sbt 0.13.8 URI has an authority component 【发布时间】:2015-08-17 21:35:13 【问题描述】:

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

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

【问题讨论】:

请分享build.sbt好吗? 我删除了你的个人资料文件夹中的 ~/.sbt/ 文件夹。 感谢您的提问! Jason Touhey 的回答帮助了我。 【参考方案1】:

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

打开 C:\Users\[USER]\.sbt\repositories

添加第三个斜线 (即activator-launcher-local:file:///$activator.local.repository-$activator.home-$user.home/.activator/repository,[组织]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/artifact.[ext])

【讨论】:

谢谢,我必须将两个“file://”更改为“file:///” 您好,我有同样的问题,我认为不值得再问一个问题:我该如何更改?我的意思是 file:// 到 file:/// 正在尝试使用示例 java 应用程序启动和运行 2.4.1 播放框架。 Activator 遇到了类似的问题,现在由于额外的斜线而可以正常工作。 如果您没有~/.sbt/repositories 文件,请删除~/.sbt/ 目录并再次运行激活器。这应该为您创建它。然后添加/ 确实解决了这个问题。 wtf - 这怎么可能是个问题。谢谢!【参考方案2】:

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

【讨论】:

是的,我每天都必须这样做,解决办法是什么? 我的 .sbt 文件夹中没有名为 repositories 的文件我使用的是 activator 1.3.5【参考方案3】:

我刚刚删除了 C:\Users[USER]\ 中的 .sbt 文件夹 并且play项目成功导入intellij。

【讨论】:

【参考方案4】:

这仍然是 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:\dev\Git\git-bash.exe" spawn="true">
            <arg line="-c 'activator run'" />
        </exec>
    </target>
</project>

您可以单独运行 fixsbt 目标来进行文件替换,也可以使用 run 目标来修复存储库文件,然后运行 ​​activator。此示例使用 gitbash shell 运行命令,因此您需要更改环境的 shell/路径。

【讨论】:

以上是关于sbt 0.13.8 URI 有一个权限组件的主要内容,如果未能解决你的问题,请参考以下文章

路径部分中带有 // 的 URL 是不是有效?

sbt-native-packager:Alpine Docker Image 上的 Scala 应用程序失败,权限被拒绝

升级到 Sbt 0.13.8 但收到几个警告“检测到带有美元符号的字符串的插值表达式”

如何在 Intellij Idea 中使用自定义 sbt 版本?

授予 FileProvider 的 uri 权限会产生 SecurityException

权限拒绝:编写 android.support.v4.content.FileProvider uri