2011-08-21 13 views
6

javac(またはantタスク)を使用すると、エラーメッセージにファイルパス全体が含まれず、ファイル名のみが含まれます。例えば、javacエラーメッセージにファイルパス全体が表示されない

$ javac src/path/to/Filename.java 
Filename.java:1: package foo.bar does not exist 
import foo.bar.Baz; 
      ^

は、私が希望することは、

$ javac src/path/to/Filename.java 
src/path/to/Filename.java:1: package foo.bar does not exist 
import foo.bar.Baz; 
      ^

私の問題は、それが全体のファイルパスだけではなく、ファイル名を与えられていない場合はvimのクイックフィックスは動作しないということです。ファイル名だけで、新しい空のファイルが開かれます:make。

私が使用している:

  • のDebian喘鳴
  • OpenJDKの-6-jdkのv6b23〜pre7-1
  • のjavac v1.6.0_23
+0

gcjまたはeclipseビルドインコンパイラを使用すると、完全なパスが出力されます。しかし、蟻はまた、JAVA_HOMEが見つかりませんエラーを印刷します。私はこれを解決する方法を知らない。 –

+0

私は99%がUbuntuのバグだと確信しています。私は自分のラップトップをFreeBSDからUbuntu 11.10に切り替えました。私はFreeBSDサーバでもjavacエラーでパス全体を見ることができます。まだ解決策を探しています... – sarumont

答えて

1

を、私はそこにはないと思いますこれを行う簡単な方法です。

しかし、私は複雑な方法があると信じています。基本的には、実行中のプログラムの内部でJavaコンパイラをロードして実行するJDKインストールの機能を利用する独自のコンパイラランナーを作成することです。多くのことを実装する必要がありますが、キーとなるのは、コンパイルエラーメッセージをフォーマットする必要があるようにフォーマットする診断プロセッサです。ここ

は、いくつかの関連リンクである:

  • Package javax.tools - 、例えば、プログラムから呼び出すことができるツールのインターフェース、コンパイラを提供します。
  • JavaCompiler - コンパイラによって実装されるインターフェイス
  • FileObject - ソースファイルを表すためにコンパイラが使用するインターフェイス。例えば診断で。 toUri()メソッドに注意してください!
関連する問題