コマンド ラインから注釈プロセッサを実行する際に問題が発生しています。問題は、Windows 環境では機能するが、私の Linux インストールでは機能しないことです。
私のプロセッサは jar ファイル (meta-validator.jar) にあります。また、プロセッサのクラスの完全修飾名を含むエントリを META-INF/services/javax.annotation.processing.Processor に追加しました。
次のコマンドで注釈プロセッサを呼び出そうとしています:
javac -cp "./metadata-validator.jar; ... (path to annotations.jar etc.)" -processor xammt.validator.modules.ValidatorModule -proc:only " ... path to sources"
Windows 環境 (Windows 7 64 ビット Pro、JDK 1.7.xx) では正常に動作し、プロセッサが検出され、プロセス メソッドが実行されます。
私の Linux 環境 (Linux Mint 13 32 ビット -> 基本的に Ubuntu 12.04、Oracle JDK 1.7) では、次のメッセージが表示されます。
error: Annotation processor 'xammt.validator.modules.ValidatorModule' not found
warning: Annotation processing without compilation requested but no processors were found.
また、-processor
スイッチがないと、同じ警告が表示されます(他の詳細な内容で)。
この問題の原因は何ですか? 問題なく Java アプリケーションを実行/コンパイルできるため、Linux マシン上の JDK は正しくインストールされていると思います。
アドバイスをありがとう。
編集:これが機能しない理由はまだわかりません。面白いのは、プログラムで動作することです - Java Compiler API を介して (両方のプラットフォームで) 問題なく注釈プロセッサを呼び出すことができました。これは、デバッグのためにより良い解決策でもあります。
EDIT2: 実際のコマンド:
javac -cp "./metadata-validator.jar;./lib/common-library.jar;./Annotation source.jar"
-processor xammt.validator.modules.ValidatorModule -proc:only "SourceFile.java"
解決済み: http://en.wikipedia.org/wiki/Classpath_(Java)#OS_specific_notes を確認してください