Sbt: java.io.IOException: 无法运行程序 "javac": CreateProcess error=2, 如果 javac 的路径包含空格,则系统找不到指定的文件

创建于 2012-07-27  ·  5评论  ·  资料来源: sbt/sbt

SBT 0.11.3 窗口

设置 PATH=d:\Distrib\Coding\Java\scala\sbt;d:\cygwin\bin;d:\cygwin\bin;c:\windows\system32; D:\Distrib\Coding\Java\jdk\jdk1.7.0_05\x86\bin\
哪个 javac
javac 是一个外部的:D:\Distrib\Coding\Java\jdk\jdk1.7.0_05\x86\bin\javac.EXE
xsbt 干净编译
...
java.io.IOException:无法运行程序“javac”:CreateProcess error=2,系统找不到指定的文件
...
设置 PATH=d:\Distrib\Coding\Java\scala\sbt;d:\cygwin\bin;d:\cygwin\bin;c:\windows\system32;D:\Distrib\Coding\Java\jdk\jdk1. 7.0_05\x86\bin\
xsbt 干净编译
...
[成功]

not-a-🐛

最有用的评论

对我来说,一个快速的解决方法是将 javac 添加到我的 PATH 中。

所有5条评论

我认为这是一个较低级别的错误,可能是java.lang.ProcessBuilder 。 sbt 不解析PATH变量。 它通过ProcessBuilder运行没有前缀的javac程序。 我不记得在 c5e31645a362bb552c826fc81d3b1a32f70b2b39 中 fork git 的特殊大小写的确切原因,但也许@jsuereth可以评论这是否是同一个问题。

如果您明确指定javaHome (例如在您的 ~/.sbt/global.sbt 配置文件中),它将直接构造二进制文件的路径。 我希望这将是一个合适的解决方法。

git东西使用cmd /c因为 git 在您使用的路径中有一个.cmd文件。 这是我们在路径上找不到javac。

你能添加两件事来帮助调试吗?

(1) 是不是64位的JDK
(2) 您使用的是我们的 MSI 安装之一,还是您自己的启动脚本?

谢谢,乔希。

大家好。
我已经找到原因了。 我正在使用 tcc/le 并且它应用了一些特殊的逻辑来修复这样一个损坏的 PATH,所以我能够从命令行使用 javac。 这当然不会影响 ProcessBuilder API。
感谢您的关注!

对我来说,一个快速的解决方法是将 javac 添加到我的 PATH 中。

此页面是否有帮助?
0 / 5 - 0 等级