2015-06-03 2 views
25

Я получаю эту ошибку при запуске sbt в проекте sbt. У меня JDK 8 и sbt 0.13.8. Я могу запустить команду активатора без проблем, но мне нужна работа sbt, потому что моя IDE (IntelliJ IDEA) использует ее для загрузки проекта.sbt 0.13.8 URI имеет компонент полномочий

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

Вы бы разделили 'build.sbt', пожалуйста? –

+2

Я избавился от него при удалении ~/.sbt/папки в папке профиля. – taanielo

+0

Спасибо за ваш вопрос! Ответ Джейсона Тоуи помог мне. –

ответ

61

URI, который активирует добавление в список репозитория sbt, не имеет третьей косой черты.

Open C:. \ Users \ [USER] \ SBT \ хранилища

Добавьте третий слэш (т.е. активатора-пусковой-местный: файла: /// $ {activator.local.repository- $ {activator.home - $ {user.home} /. активатор}/репозиторий}, [организация]/[модуль]/(scala_ [scalaVersion] /) (sbt_ [sbtVersion] /) [revision]/[type] s /artifact.[ext])

+5

Спасибо, было два «файла: //», которые мне пришлось изменить на «file: ///» – NewfrontSolutions

+1

ВЫ СОХРАНИЛИ МОЙ ДЕНЬ !!!!!!!!!! Спасибо! –

+0

Привет, у меня такая же проблема, и я думаю, что этого не стоит другого вопроса: как я могу это сделать? Я имею в виду файл: // в файл: /// – Elaqqad

4

Решение немного сложнее (вам нужно снова вставлять косую черту). См. Здесь: https://github.com/typesafehub/activator/issues/1037

+0

также см. Https://github.com/typesafehub/activator/issues/1033 – Darwyn

+0

Да, я должен делать это каждый день, каково решение для этого? – Phil

+1

У меня нет файла, называемого репозиториями в папке .sbt Я использую активатор 1.3.5 – Abhijith

5

Я просто удалил папку .sbt в C: \ Users [USER] \ , и проект игры был успешно импортирован в intellij.

1

Это все еще проблема с Windows, и исправление заключается в замене файла: // файлом: ///, и это очень раздражает, поэтому хорошим обходным путем является установка простого муравья 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 в одиночку сделать файл заменить или использовать цель запуска исправить файл репозиториев, а затем запустить активатор. В этом примере для запуска команды используется оболочка gitbash, поэтому вам необходимо изменить оболочку/путь для вашей среды.

Смежные вопросы