我在使用命令行运行我的注解处理器时遇到了问题。问题是它在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位专业版,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
开关,我也会得到相同的警告(还有其他冗长的内容)。
可能是什么导致了这个问题?我猜想我的 Linux 机器上安装的 JDK 正确无误,因为我能够运行/编译 Java 应用程序而没有任何问题。
感谢任何建议。
编辑:我仍然不知道为什么这不起作用。有趣的事情是,它在编程上工作得很好——我成功地通过 Java 编译器 API 调用了我的注释处理器(在两个平台上都可以),这也是更好的解决方案,因为可以进行调试。
编辑2: 实际命令:
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