我在 Ubuntu 12.04 和 Scala 2.9.2 和 ensime_2.9.2-RC1-0.9.3.RC4
上使用 Emacs 24 快照。
基本上我做了与 https://groups.google.com/forum/?hl=en&fromgroups#!topic/ensime/HvvvFr5gSwg 中描述的相同的事情
ensime generate
生成 .ensime 文件。 M-x ensime
在 Emacs 上启动 ENSIME。 但是,当我尝试使用
C-c C-v s
在 Emacs 中启动 SBT 控制台时,它显示以下错误:[info] Loading project definition from /home/ximyu/.sbt/plugins
[info] Updating {file:/home/ximyu/.sbt/plugins/}default-86f483...
[error] a module is not authorized to depend on itself: default#default-86f483;0.0
[error] {file:/home/ximyu/.sbt/plugins/}default-86f483/*:update:
java.lang.IllegalArgumentException: a module is not authorized to depend on itself: default#default-86f483;0.0
显然 ENSIME 正在查看项目定义的错误目录。它实际上不是查看我的项目目录,而是查看
~/.sbt
。有什么解决办法吗? 最佳答案
我有同样的问题。我刚开始使用 ensime,所以我也不知道为什么会这样。此外,我对 scala 和 ensime 的了解非常有限,因此这只是可能更明显的解决方法。
无论如何,这是有问题的 ensime 函数:
(defun ensime-sbt-project-dir-p (path)
"Is path an sbt project?"
(or (not (null (directory-files path nil "\\.sbt$")))
(file-exists-p (concat path "/project/Build.scala" ))
(file-exists-p (concat path "/project/boot" ))
(file-exists-p (concat path "/project/build.properties" ))))
基本上 ensime 将使用上述函数来搜索缓冲区上方的文件夹,您可以在其中点击 C-c C-v s 来确定根项目文件夹。因此, 的简单修复 是简单地将 添加 一个(空).sbt 文件夹到包含您的 .ensime 项目描述的文件夹中。
关于scala - ENSIME 找不到正确的项目定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11547122/