javax.annotation 在哪里

Posted

技术标签:

【中文标题】javax.annotation 在哪里【英文标题】:Where is javax.annotation 【发布时间】:2014-04-30 14:57:28 【问题描述】:

好的,所以这可能是一个 NooB 问题(我更喜欢 C++),但我迷失在 Java 森林及其框架森林中......

我正在尝试研究 Eclipse RCP 开发。为此,我正在关注这个著名的教程: http://www.vogella.com/tutorials/EclipseRCP/article.html

在第 15 步,我需要添加以下依赖包以导入我的包中。 javax.annotation javax.injection

问题是我无法选择这些(它们不在选择列表中) 我确实有 javax.el javax.servlet.* 和 javax.xml.*

看着 http://docs.oracle.com/javase/7/docs/api/overview-summary.html 建议这应该是标准 java 的一部分。

我错过了什么明显的错误?

【问题讨论】:

【参考方案1】:

依赖包括版本:

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

见:http://mvnrepository.com/artifact/javax.annotation/javax.annotation-api

或者对于newerjakarta.annotation:

<dependency>
   <groupId>jakarta.annotation</groupId>
   <artifactId>jakarta.annotation-api</artifactId>
   <version>1.3.5</version>
</dependency>

见:https://mvnrepository.com/artifact/jakarta.annotation/jakarta.annotation-api

Java 通用注释模块 java.xml.ws.annotation 在 Java 版本 9 中已被弃用,并在 Java 版本 11 中被删除。如果这导致问题,您可以尝试添加 javax.annotation。

Java 8 的 Javadocs 可以在这里找到: http://docs.oracle.com/javase/8/docs/api/javax/annotation/package-summary.html

【讨论】:

我尝试从这里导入“guava”库:github.com/google/guava,但我不断收到有关“javax.annotation*”缺失的错误,即使我已将编译器设置为是 Java 的 8 版。怎么还是不见了?你能帮忙吗?【参考方案2】:

您的评论表明这是用于 Guava,因此您需要 the JSR305 library,它扩展了 javax 包。

2020 年更新:请注意,this library breaks the Oracle licensing agreement 和 Guava 已移至 checkerframework's Nullable annotation。

【讨论】:

【参考方案3】:

不确定这是否仍然相关,但对于 Java 8,我必须添加以下两个 Maven 依赖项才能使 javax.annotation.concurrent.ThreadSafe 工作:

    <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>1.3.2</version>
    </dependency>

    <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.0</version>
    </dependency> 

【讨论】:

jsr305 依赖成功了!感谢您的提示。【参考方案4】:

在 Java 版本 >= 6 中,您不需要显式添加它们。 它们是 JDK 的一部分。只是尝试跳过添加它们,也许 说明列表已过时。

在 Java 6 之前,您需要添加这个 jar,我认为:jsr250-api-1.0.jar

http://central.maven.org/maven2/javax/annotation/jsr250-api/1.0/

http://download.java.net/maven/2/javax/annotation/jsr250-api/1.0/

【讨论】:

以上是关于javax.annotation 在哪里的主要内容,如果未能解决你的问题,请参考以下文章

Resource注解无法导入依赖使用javax.annotation的注解类

proguard 注意:库类的重复定义 [javax.annotation.PostConstruct]

导入 javax.annotation.Resource 无法解析

如何解决 java.lang.NoClassDefFoundError: javax/annotation/Generated?

Java 11 升级缺少 javax.annotation.security

javax.annotation 类和 Java 11 JDK