Syntastic 没有将类路径传递给 Javac

Syntastic Not Passing Classpath to Javac

我在 Windows 工作,试图将 gVIM 与 Syntastic 一起用于 Java 项目,但我似乎无法让插件发送 Java 类路径给编译器。

这是我的 _vimrc 配置:

let g:syntastic_java_checkers=['java']
let g:syntastic_java_javac_config_file_enabled = 1

这会将 Syntastic 配置为从我的工作目录中名为 .syntastic_javac_config 的文件中读取类路径,我已在该文件中填写了以下信息(为了便于阅读而删节了绝对路径):

let g:syntastic_java_javac_classpath = '<project root>\build\classes\main;<project root>\build\resources\main;<project root>\build\classes\test;<project root>\build resources\test'

上面的配置 看起来 是正确的,因为我可以 运行 命令 :SyntasticJavacEditClasspath 并且它显示了我在配置中配置的类路径文件。但是,出于某种原因,类路径永远不会传递给 javac。如果我 运行 Microsoft 的 SysinternalsSuite 中的 procmon.exe 工具,我会看到 javac 使用以下命令行调用(其中 <working file> 是绝对路径):

javac -Xlint -d %AppData%\Local\Temp\vim-syntastic-javac <working file>

值得注意的是,缺少用于配置类路径的 -cp 参数。结果是 所有 我对我编写的其他 类 的导入都会产生失败,以及我代码中对那些 类 的所有引用。有点没用。

我希望有人可以提供有关此处可能存在问题的想法。我查看了 Syntastic 中的 javac.vim 文件,但没有任何问题是明显的问题根源。如果有人知道单步执行 Vimscript 的方法,我也会认为这是一个胜利。

我能够逐步使用 Vim 的 :debug 工具,发现 javac 语法检查器没有像我预期的那样拆分类路径,寻找 \n 作为路径分隔符,而不是 OS 的本地路径分隔符([=20= 中的 ;,*nix 中的 :)。以这种方式在 .syntastic_javac_config 中指定类路径解决了问题。

我会做更多的研究以确定问题是由于我的误解还是 Syntastic 中的错误,如有必要我会提交错误报告。