2016-04-08 11 views
1

私はWindowsで動作していて、JavaプロジェクトでSyntaxとgVIMを使用しようとしていますが、Javaクラスパスをコンパイラに送信するプラグインを取得できません。ClasspathがJavacに合格していません

ここに私の_vimrc設定です:

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

これは私が、以下の情報(読みやすくするために簡略絶対パス)を記入している私の作業ディレクトリに.syntastic_javac_configというファイルからクラスパスを読み取るためにSyntasticを設定するには:

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ツールを実行する場合、私は(<working file>絶対パスをある)次のコマンドラインで呼び出されるjavacを参照してください。

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

不在が目立つが、クラスパスを設定するための-cpパラメータです。その結果、すべて私が書いた他のクラスへのインポートは、コード内のそれらのクラスへのすべての参照と同様に、失敗を生成します。役に立たない。

私は誰かがここで何が間違っているかもしれないかについてのアイデアを提供したいと考えています。私はSyntheticのjavac.vimファイルを見てきましたが、問題の明白な原因として何も出ていません。もし誰かがVimscriptを踏みにじる方法を知っていれば、私はそれも勝利と考えています。

+0

Vimで ':h String'を読んでください。 – lcd047

+0

'g:syntastic_java_javac_classpath'が書かれているように動作しないことを示唆しているなら、それは良い点ですが、ここでは問題はありません。私はバックスラッシュをエスケープしようとしました。フォワードスラッシュ( 'javac'は大丈夫そうです)にリバースし、代わりにリテラル文字列を使用しましたが、どれも問題を解決しませんでした。 OPを編集して問題を修正しました。 – djmoch

+0

それから ':h syntastic-config-debug'を読んで、デバッグトレースを[issue tracker](https://github.com/scrooloose/syntastic/issues)に投稿してください。 – lcd047

答えて

1

Iは;で(OSへのパスセパレータではなく、パスのセパレータとして\n探してネイティブ、Vimの:debug機能を使用してステップスルーすることができた、と私は予想通りjavac文法チェッカーがクラスパスを分割しないことがわかっWindows、、* nix)。このようにして.syntastic_javac_configにクラスパスを指定することで問題は解決されました。

問題が私の最後の誤解やSyntasticのバグかどうかを判断するためにもう少し研究を行い、必要に応じてバグレポートを提出します。

関連する問題