无法运行java批注处理器
从命令行运行注释处理器时遇到问题。 问题是它在Windows环境下工作,但在我的linux安装上不工作 我的处理器位于一个jar文件(metavalidator.jar)中。我还向META-INF/services/javax.annotation.processing.Processor添加了包含处理器类的完全限定名的条目 我正在尝试使用以下命令调用注释处理器:无法运行java批注处理器,java,annotations,javac,processor,Java,Annotations,Javac,Processor,从命令行运行注释处理器时遇到问题。 问题是它在Windows环境下工作,但在我的linux安装上不工作 我的处理器位于一个jar文件(metavalidator.jar)中。我还向META-INF/services/javax.annotation.processing.Processor添加了包含处理器类的完全限定名的条目 我正在尝试使用以下命令调用注释处理器: javac -cp "./metadata-validator.jar; ... (path to annotations.jar
javac -cp "./metadata-validator.jar; ... (path to annotations.jar etc.)" -processor xammt.validator.modules.ValidatorModule -proc:only " ... path to sources"
在Windows环境中,它只是工作(Windows7 64位Pro,JDK1.7.xx),找到处理器并执行process方法
在我的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
开关,我也会得到同样的警告(还有其他冗长的东西)
是什么导致了这个问题?我想我的JDK在linux机器上的安装是正确的,因为我能够运行/编译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"
已解决:
检查在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版本根本不适用于注释处理器。我定制了OpenJDK7U9(来自UbuntuQuantal),效果非常好
我在Debian的bugtracker中报告了一个错误:,除非问题实际上是使用了错误的路径分隔符。如果是的话,那就是答案。非常感谢,我不知道。你刚刚救了我的命