【问题标题】:Ensime can't find java?Ensime找不到java?
【发布时间】:2014-10-10 15:49:08
【问题描述】:

当我在 Emacs 中启动 ensime 时,它​​立即崩溃说:

'"java"' is not recognized as an internal or external command,
operable program or batch file.

Process *inferior-ensime-server-documents* exited abnormally with code 1.

这很奇怪,因为当我在 cmd(在 Windows 8 中)中编写 java 时,它会运行。我将 java 添加到 Emacs 的 exec-path 和系统的 Path 变量中。我也很惊讶它是三引号,'"java"'。这些报价会干扰吗?以及如何处理它们?

我的 .ensime 文件(通过 sbt gen-ensime 创建)如下所示:

(
     :root-dir "C:\\Users\\leokr_000\\Documents\\skala"
     :cache-dir "C:\\Users\\leokr_000\\Documents\\skala\\.ensime_cache"
     :name "skala"
     :java-home "C:\\Program Files\\Java\\jdk1.7.0_07\\bin"
     :java-flags ("-Xmx512M" "-XX:MaxPermSize=256m" "-XX:ReservedCodeCacheSize=128m" "- Dsbt.log.format=true")
     :reference-source-roots nil
     :scala-version "2.10.4"
     :compiler-args nil

 :subprojects ((
   :name "skala"
   :module-name "skala"
   :source-roots ("C:\\Users\\leokr_000\\Documents\\skala\\src\\main\\scala"     "C:\\Users\\leokr_000\\Documents\\skala\\src\\main\\java" "C:\\Users\\leokr_000\\Documents\\skala\\src\\test\\scala" "C:\\Users\\leokr_000\\Documents\\skala\\src\\test\\java")
       :target "C:\\Users\\leokr_000\\Documents\\skala\\target\\scala-2.10\\classes"
       :test-target "C:\\Users\\leokr_000\\Documents\\skala\\target\\scala-2.10\\test-classes"
       :depends-on-modules nil
       :compile-deps ("C:\\Users\\leokr_000\\.sbt\\boot\\scala-2.10.4\\lib\\scala-library.jar")
       :runtime-deps nil
      :test-deps nil
       :reference-source-roots ("C:\\Users\\leokr_000\\.ivy2\\cache\\org.scala-lang\\scala-library\\srcs\\scala-library-2.10.4-sources.jar")))

)

【问题讨论】:

  • 很好地抓住了引号——看起来 Emacs 试图运行的程序是 "java",并带有双引号。您的 .ensime 文件是什么样的,您是如何创建的?
  • 好吧,我生成了它。评论里不能贴在这里,所以我贴在上面了。
  • 我注意到在以:java-flags 开头的行上,您有一个字符串为"- Dsbt.log.format=true"-后面真的有空格吗?应该没有。
  • 对不起,我在尝试将其格式化为块引用时意外放置了这些空格。所以他们真的不在那里。也许我还应该提到我运行的是波兰版本的 Windows 8。是否有一些关于单引号和双引号的环境设置?为什么要三引号?
  • “三引号”是双引号加上单引号。我手头没有 Windows,但我相信它的命令 shell 在上下文 'program' is not recognized as an internal or external command… 中使用命令名称周围的单引号;所以在这种情况下,它试图运行的实际程序看起来有双引号。我希望这是有道理的。至于为什么,我看不出有什么原因。希望其他人可以帮助您。

标签: java windows emacs ensime


【解决方案1】:

您的:java-home 错误,我不知道您如何使用此设置在sbt 中运行任何内容。从中删除 \\bin 并调查生成错误的原因。

【讨论】:

  • 我很确定我可以用 sbt 构建。经过一些随机更改后,我什至设法使用了 ensime,但我并不喜欢 ScalaIDE。 Emacs 可能适合真正的黑客。
  • SBT 不使用 .ensime 文件。您的 Java 主页不正确。
猜你喜欢
  • 1970-01-01
  • 2012-12-04
  • 2011-11-12
  • 2012-07-17
  • 2016-12-03
  • 2011-07-23
  • 1970-01-01
  • 2020-12-02
  • 2018-04-24
相关资源
最近更新 更多