Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法运行java批注处理器_Java_Annotations_Javac_Processor - Fatal编程技术网

无法运行java批注处理器

无法运行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

从命令行运行注释处理器时遇到问题。 问题是它在Windows环境下工作,但在我的linux安装上不工作

我的处理器位于一个jar文件(metavalidator.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环境中,它只是工作(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中报告了一个错误:

,除非问题实际上是使用了错误的路径分隔符。如果是的话,那就是答案。非常感谢,我不知道。你刚刚救了我的命