【发布时间】: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…中使用命令名称周围的单引号;所以在这种情况下,它试图运行的实际程序看起来有双引号。我希望这是有道理的。至于为什么,我看不出有什么原因。希望其他人可以帮助您。