javac で class ファイルを作成しないようにする

Sublime Text の SublimeLinter で Java の法チェックすると、内部で javac が実行されているので構文チェックが問題ないとそのままコンパイルが完了して .class ファイルが出力されるので Java Compiler API を使って .class を作成しないようにコンパイル処理を作成してみました。

tadaedo/memjc · GitHub

memjc Test.java

でクラスファイルが作成されないため、構文チェックだけが使用できます。

memjc -sourcepath /tmp /tmp/Test.java

一部 javac オプションも使えます。(そのまま Java Compiler API に渡してるだけなので)

memjc -memjc-out Test.java

でクラスファイルも出力されるので

javac Test.java

と同じになります。

java コマンドが jre を参照している場合 Java Compiler API は呼び出せないっぽいので jdk を参照させる必要があるようです。まあ jrejavaコンパイルできないのは当然ですね。