2014-02-04 4 views
1

Я уверен, что у меня есть настройки Emacs, Ensime, SBT и Scala для правильной работы. Я могу редактировать файлы и видеть ошибки типа, когда я сохраняю и успешно пытаюсь использовать инструменты autorefactoring от ensime.Здание с Ensime удаляет все файлы .class, но ничего не компилирует

Проблема в том, когда я пытаюсь построить свой проект. Независимо от того, есть ли какая-либо ошибка нет, нажатие C-c C-b b дает мне этот выход:

Latest Compilation Results (q to quit, TAB to jump to next error) 
---------------------------------------- 

0 errors, 0 warnings. 

Тогда я заметил РЕПЛО ничего, что привело меня спросить this question не грузил, но я обнаружил, что если я построил мой проект, вызвав sbt compile из командной строки, я мог бы построить свой проект, и использование REPL было прекрасным.

Я также заметил, что после того, как я успешно построил свой проект с sbt compile, а затем пытался работать над проектом и называют «инкрементальный сборки» (C-c C-b r), я хотел бы получить:

Asynchronous RPC Aborted: Error occurred in incremental builder. Check the server log. 

в мини-буфере , Это то, что появилось в *inferior-ensime-server* буфер:

Handling RPC: (swank:builder-update-files (nil)) 
Error handling RPC: java.lang.NullPointerException : 
scala.reflect.internal.util.BatchSourceFile.hashCode(SourceFile.scala:170) 
scala.collection.mutable.FlatHashTable$HashUtils$class.elemHashCode(FlatHashTable.scala:392) 
scala.collection.mutable.HashSet.elemHashCode(HashSet.scala:41) 
scala.collection.mutable.FlatHashTable$class.containsEntry(FlatHashTable.scala:124) 
scala.collection.mutable.HashSet.containsEntry(HashSet.scala:41) 
scala.collection.mutable.HashSet.contains(HashSet.scala:58) 
scala.collection.GenSetLike$class.apply(GenSetLike.scala:43) 
scala.collection.mutable.AbstractSet.apply(Set.scala:45) 
scala.collection.SeqLike$$anonfun$distinct$1.apply(SeqLike.scala:490) 
scala.collection.immutable.List.foreach(List.scala:309) 
scala.collection.SeqLike$class.distinct(SeqLike.scala:489) 
scala.collection.AbstractSeq.distinct(Seq.scala:40) 
scala.tools.nsc.Global$Run.compileSources(Global.scala:1531) 
scala.tools.nsc.Global$Run.compileFiles(Global.scala:1643) 
scala.tools.nsc.interactive.RefinedBuildManager.update0$1(RefinedBuildManager.scala:133) 
scala.tools.nsc.interactive.RefinedBuildManager.update(RefinedBuildManager.scala:188) 
scala.tools.nsc.interactive.RefinedBuildManager.update(RefinedBuildManager.scala:102) 
org.ensime.server.IncrementalBuilder$$anonfun$act$1$$anonfun$apply$mcV$sp$1.liftedTree1$1(IncrementalBuilder.scala:124) 
org.ensime.server.IncrementalBuilder$$anonfun$act$1$$anonfun$apply$mcV$sp$1.applyOrElse(IncrementalBuilder.scala:93) 
scala.runtime.AbstractPartialFunction$mcVL$sp.apply$mcVL$sp(AbstractPartialFunction.scala:33) 
scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:33) 
scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:25) 
scala.actors.InternalActor$class.receive(InternalActor.scala:123) 
org.ensime.server.IncrementalBuilder.receive(IncrementalBuilder.scala:55) 
org.ensime.server.IncrementalBuilder$$anonfun$act$1.apply$mcV$sp(IncrementalBuilder.scala:88) 
org.ensime.server.IncrementalBuilder$$anonfun$act$1.apply(IncrementalBuilder.scala:87) 
org.ensime.server.IncrementalBuilder$$anonfun$act$1.apply(IncrementalBuilder.scala:87) 
scala.actors.Reactor$class.seq(Reactor.scala:285) 
org.ensime.server.IncrementalBuilder.seq(IncrementalBuilder.scala:55) 
scala.actors.Reactor$$anon$3.andThen(Reactor.scala:263) 
scala.actors.Combinators$class.loop(Combinators.scala:28) 
org.ensime.server.IncrementalBuilder.loop(IncrementalBuilder.scala:55) 
scala.actors.Combinators$$anonfun$loop$1.apply(Combinators.scala:28) 
scala.actors.Combinators$$anonfun$loop$1.apply(Combinators.scala:28) 
scala.actors.Reactor$$anonfun$seq$1$$anonfun$apply$1.applyOrElse(Reactor.scala:282) 
scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) 
scala.actors.ReactorTask.run(ReactorTask.scala:31) 
scala.actors.ReactorTask.compute(ReactorTask.scala:63) 
scala.concurrent.forkjoin.RecursiveAction.exec(RecursiveAction.java:160) 
scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262) 
scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.pollAndExecAll(ForkJoinPool.java:915) 
scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:980) 
scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478) 
scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104) 

Writing: (:return (:abort 205 "Error occurred in incremental builder. Check the server log.") 44) 

Если я пытался сделать полную сборку с C-c C-b b, я хотел бы получить исходный буфер не показывая никаких ошибок или предупреждений (независимо от того, если бы это было так или нет) и убедитесь, что исходный каталог классов будет удален.

Почему это происходит и как я могу получить C-c C-b b и C-c C-b r, чтобы правильно построить проект?

EDIT:

Похоже, файлы класса генерируются внутри каталога, в котором я имею ensime установлен, который кажется довольно странным для меня ...

EDIT 2:

Я получаю следующее в *Messages* при запуске. Я не знаю, является ли это релевантным:

Eager macro-expansion failure: (error "(ensime-builder-changed-files (ensime-connection)) is not a valid place expression") [3 times] 

ответ