4

我在 mac os 上尝试过 ensime/sbt。首先,我在命令行中使用 sbt 打开项目文件夹中的 .scala 文件,然后我运行 ensime 并且它仍然可以正常工作,但是每当我运行 ensime-sbt (cc cv s) 时,我得到了

java.io.IOException: No such file or directory
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:883)
at xsbt.boot.Locks$.apply0(Locks.scala:34)
at xsbt.boot.Locks$.apply(Locks.scala:27)
at scala.collection.Iterable$class.$init$(Proxy.scala:32)
at xsbt.boot.Launch$ScalaProvider.<init>(Launch.scala:107)
at xsbt.boot.Launch$$anonfun$1.apply(Launch.scala:83)
at org.apache.ivy.plugins.namespace.NamespaceRule.newEntry(Cache.scala:17)
at org.apache.ivy.plugins.namespace.NamespaceRule.apply(Cache.scala:12)
at xsbt.boot.Launch.getScala(Launch.scala:85)
at xsbt.boot.Launch$.run(Launch.scala:49)
at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:43)
at xsbt.boot.Launch$.launch(Launch.scala:68)
at xsbt.boot.Launch$.apply(Launch.scala:14)
at xsbt.boot.Boot$.runImpl(Boot.scala:24)
at xsbt.boot.Boot$.main(Boot.scala:15)
at xsbt.boot.Boot.main(Boot.scala)
    Error during sbt execution: java.io.IOException: No such file or directory

    Process sbt exited abnormally with code 1

我尝试从命令行使用 sbt,一切都可以从那里运行(编译/运行/控制台)。我在 mac os 上的 emacs24 (2011/07/24) 上使用 sbt 0.10.1 和最新的二进制 ensime。

知道我做错了吗?

4

5 回答 5

6

我有这个,在应用 strace 后我发现了这个问题。ensime-sbt.el 函数从 cwd 向上搜索以查找 ./project/build.properties。在找到此目录/文件时,它假定这是根目录。

所以只需创建这个文件,这个问题就会消失。如果 ensime 默认创建此文件会很好,因为它是 sbt 函数工作所需的文件。

于 2011-08-27T09:42:48.163 回答
5

我得到了同样的错误。这种情况似乎是 sbt 尝试但未能在用户的主目录中创建“.sbt”和“.ivy”目录。也许,原因是操作系统用户没有权限写入用户的主目录。

于 2011-11-12T16:44:54.703 回答
2

这可能与许可有关。

我检查了 Locks.scala https://github.com/harrah/xsbt/blob/0.10/launch/Locks.scala源,并猜测“file.getParentFile.mkdirs()”由于权限被拒绝而没有工作。

我昨天遇到了同样的问题,并在一分钟前通过添加 sudo 运行它:

“sudo emacs xxx.scala”

于 2011-08-22T16:03:09.450 回答
1

您可以更改 sbt.ivy.home 和 ivy.home 属性。因此,为了增强 Joachim 的第一个解决方案,您将设置两个系统属性:像这样:java -Dsbt.ivy.home=/tmp/.ivy2/ -Divy.home=/tmp/.ivy2/ -jar dirname $0/sbt-launch。罐子“$@”

希望能解决你的问题

于 2013-12-03T13:32:28.493 回答
-1

This error also occurs when the files in the home directory that sbt tries to access are not owned by the user that tries to run it. run a chmod 777 on the directoris in the home master and the issue will be solved.

于 2014-09-23T14:29:37.170 回答