【问题标题】:The attribute lookup is undefined for the annotation type Resource注释类型资源的属性查找未定义
【发布时间】:2015-04-20 20:46:24
【问题描述】:

第一次尝试 JMS,当我尝试注入 @Resource(lookup="jms/ConnectionFactory") 时,出现错误:

注释类型资源的属性查找未定义

我刚刚阅读了How to use java ee 6 @Resource annotation,但我还没有研究过 Maven,所以我想知道,我是否可以通过其他方式解决这个问题而不是使用 Maven?

顺便说一下,我正在使用 Eclipse。

【问题讨论】:

  • 您可能正在使用不同的资源注释。检查您的导入是否包含import javax.annotation.Resource;
  • 我已经导入了那个包
  • 那么您使用的是该注解的旧版本(请参阅docs.oracle.com/javaee/5/api/javax/annotation/Resource.html:该注解在 Java EE 5 中没有查找属性)。您在构建路径中有一个旧 jar。
  • 如果您的构建路径中有正确的 jar,则不会出现此编译错误。 Ctrl-单击注解类并检查它来自哪个 jar。
  • 这个类原来来自 SE 库,现在我怎样才能让 Eclipse 忽略它,并让它明白我想要 EE 呢?当我尝试从类路径中删除 JRE 时,错误消失了

标签: eclipse jakarta-ee jms


【解决方案1】:

解决这个问题的正确方法是在 Eclipse 中右键单击您的项目,Java Build Path -> Order and Exports,选择 JRE System Library 并单击底部。

【讨论】:

    【解决方案2】:

    尝试使用 mappedName 属性:

    @Resource(mappedName="jms/ConnectionFactory")
    

    另外,如果您仍想使用查找功能,请查看您正在使用的 javax.annotation.jar。 JavaEE 6 中引入了 Lookup 属性。可能您的版本较旧。

    【讨论】:

      【解决方案3】:

      Java EE 6 开发人员遇到的一个常见问题是使用 @Resource 注释,这与 JDK 内置的 @javax.annotation.Resource 冲突。这里我们将展示如何解决 Eclipse 和 Maven 中的编译问题。

      如果您查看 Java EE 6 中包含的 @Resource 注释,它包含查找属性。不幸的是,正如我们所说,JDK 本身发布了自己的@javax.annotation.Resource 版本,它没有这个属性。如果您使用 Eclipse 或 Maven,这会导致编译问题。

      public class MyCache {
          @Resource(lookup="java:jboss/infinispan/container/cluster")
          private CacheContainer container;
      }
      

      [ERROR] 符号:方法查找() [错误] 位置:@interface javax.annotation.Resource 在 Eclipse 环境中解决问题非常简单:您需要做的就是添加 @Resource 注释的 JBoss EE 6 实现 - 并且 - 将它放在 JDK 库之前

      @resource maven 查找 JBoss 库在 AS 7 版本中应命名为 jboss-annotations-api_1.1_spec-1.0.0.Final.jar(或类似名称),而 jboss-annotations-api_1.1_spec-1.0.1.Final-redhat- 2.jar 在 EAP 6 中

      如果您使用 Maven 进行编译,那么解决此问题的最简单方法是将注释 JAR 库添加到 JDK 的背书目录中,这样它将覆盖默认的 @Resource 实现。

      注释 JAR 需要复制到 JDK 发行版的 JAVA_HOME/jre/lib/endorsed 中。

      作为替代方案,您可以将 -Djava.endorsed.dirs 传递给 JVM 参数,如以下 Eclipse 中的 Maven 构建所示

      【讨论】:

        猜你喜欢
        • 2021-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-28
        • 2016-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多