簡體   English   中英

無法運行java注釋處理器

[英]Unable to run java annotation processor

我從命令行運行我的注釋處理器時遇到了麻煩。 問題是它適用於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 32bit - >基本上是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切換我得到相同的警告(與其他詳細的東西)。

什么可能導致這個問題? 我想我的linux機器上的JDK安裝正確,因為我能夠毫無問題地運行/編譯java應用程序。

謝謝你的建議。

編輯:我仍然不知道為什么這不起作用。 有趣的是,它以編程方式工作 - 我設法通過Java編譯器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

在Linux上你是使用冒號而不是分號作為類路徑分隔符? 包括您正在執行的Linux命令。

將分號更改為類路徑中的冒號,它應該可以工作。

像這樣:

javac -cp "./metadata-validator.jar:./lib/common-library.jar:./Annotation source.jar" -processor xammt.validator.modules.ValidatorModule -proc:only "SourceFile.java"

我還發現Debian Wheezy(7u3)中包含的OpenJDK 7版本根本不適用於注釋處理器。 我做了一個OpenJDK 7u9的定制版本(來自Ubuntu Quantal),它運行得很好。

我在Debian的bugtracker中報告了一個錯誤: http ://bugs.debian.org/cgi-bin/bugreport.cgi?video = 697658

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM