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 有一个权限组件的主要内容,如果未能解决你的问题,请参考以下文章
sbt-native-packager:Alpine Docker Image 上的 Scala 应用程序失败,权限被拒绝
升级到 Sbt 0.13.8 但收到几个警告“检测到带有美元符号的字符串的插值表达式”
如何在 Intellij Idea 中使用自定义 sbt 版本?