【问题标题】:Custom Annotation Processor working in Maven but not in eclipse自定义注释处理器在 Maven 中工作但在 eclipse 中不工作
【发布时间】:2018-03-15 17:48:27
【问题描述】:

我有一个用于示例项目的自定义注释处理器。我在示例项目的 pom.xml 文件中添加了以下内容

  <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <groupId>org.apache.maven.plugins</groupId>
            <configuration>
                <annotationProcessors>
                    <annotationProcessor>com.******.CustomAnnotationProcessor</annotationProcessor>
                </annotationProcessors>
                <compilerArgs>
                    <arg>-Amyarg=${project.artifactId}</arg>
                </compilerArgs>
            </configuration>
 </plugin>

然后我在 application.properties 文件中声明参数如下:

@myarg@.someVal=foobar

并按如下方式访问它“

public class TestClass {
@Value("${@myarg@.someVal}")
private String testVal;

public void testMethod(){
    System.out.println(testVal);
}
}

它在 Intelli J 中运行良好,因为 testVal 打印为 foobar。但是,在eclipse中我得到以下错误:

org.springframework.beans.factory.BeanCreationException: Error creating     bean with name ‘testClass': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder ‘@myarg@.someVal’ in string value "${@myarg@.someVal}"

我知道 Eclipse 使用自己的编译器,而 Maven 可能使用 javac。如何让这个自定义注释也适用于 Eclipse?

【问题讨论】:

标签: java spring eclipse maven annotation-processing


【解决方案1】:

请按照以下步骤启用注释处理。

  1. 右击项目,选择Properties

  2. Java Compiler -&gt; Annotation Processing。检查Enable annotation processing

  1. 打开Java Compiler -&gt; Annotation Processing -&gt; Factory Path。检查Enable project specific settings。将您的 JAR 文件添加到列表中。

4. 清理并构建项目。

【讨论】:

  • 对不起,如果我问的是一些显而易见的问题,但你所说的“你的 JAR”到底是什么意思。自定义注释处理器的 jar ?
  • 你必须有一个带有自定义注解和注解处理器的jar?
【解决方案2】:

我也有这个问题。

99% 的解决方案如 gyan 所述。

最后 1% 用于 eclipse 我需要“jar”文件,需要在“工厂路径”中指定所有需要的 jar 文件。

对于我的项目来说,这意味着

  1. 注释定义项目 jar,
  2. 注释处理项目 jar,以及
  3. javapoet.jar.

【讨论】:

    猜你喜欢
    • 2014-09-15
    • 2014-01-31
    • 2012-07-24
    • 2021-06-09
    • 2013-09-27
    • 1970-01-01
    • 2018-02-10
    • 2017-08-11
    • 2011-08-17
    相关资源
    最近更新 更多