【问题标题】:Unable to run java annotation processor无法运行 java 注释处理器
【发布时间】:2012-12-16 01:35:18
【问题描述】:

我在从命令行运行注释处理器时遇到问题。 问题是它适用于 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 64bit 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 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

【问题讨论】:

    标签: java annotations javac processor


    【解决方案1】:

    在 Linux 上,您是否使用冒号而不是分号作为类路径分隔符?包括您正在执行的 Linux 命令。

    在类路径中将分号更改为冒号,它应该可以工作。

    像这样:

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

    【讨论】:

    • 除非问题实际上是使用了错误的路径分隔符。如果是这样,那就是答案。
    • 非常感谢,我不知道。
    • 你刚刚救了我的命
    【解决方案2】:

    我还发现 Debian Wheezy (7u3) 中包含的 OpenJDK 7 版本根本不适用于注释处理器。我对 OpenJDK 7u9(来自 Ubuntu Quantal)进行了自定义构建,它运行良好。

    我在 Debian 的 bugtracker 中报告了一个错误:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=697658

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多