【问题标题】:Spring nullable annotation generates unknown enum constant warningSpring可为空的注释生成未知的枚举常量警告
【发布时间】:2018-11-15 19:01:38
【问题描述】:

在我的应用程序中,每当我将@Nullable(从org.springframework.lang.Nullable 导入)添加到任何字段时,都会收到构建警告:

警告:java:未知枚举常量 javax.annotation.meta.When.MAYBE 原因:javax.annotation.meta 的类文件。找不到时

@NonNull 和 spring 编译的其他空安全注释没有任何警告,因为它的实现不导入 import javax.annotation.meta.When

应用程序运行良好,但警告很烦人。我正在使用 spring boot 2.1.0 和 java 版本 1.8.0_191

【问题讨论】:

  • 查看这个问题,特别是对其答案的评论:stackoverflow.com/questions/11104667/…
  • 每当我运行嵌入式 Tomcat 时,这都会给我一个问题,但独立运行它并没有给我一个问题。我刚刚删除了问题注释。

标签: spring spring-boot


【解决方案1】:

此警告是由于您的项目运行时无法使用 javax.annotation.meta.When 枚举(org.springframework.lang.Nullable 引用此枚举但它不会自动提供)。您需要引入 JSR305 实现来修复此警告。

Google find bugs repo 包含一个可以解决问题的 JSR305 实现: https://mvnrepository.com/artifact/com.google.code.findbugs/jsr305

由于您使用的是 gradle,请将依赖项添加到您的 build.gradle 脚本中:

...
dependencies {
    ...

     // https://mvnrepository.com/artifact/com.google.code.findbugs/jsr305
    implementation 'com.google.code.findbugs:jsr305:3.0.2'

    ...
}
...

做一个干净的构建,错误应该消失


如果您不想使用com.google.code.findbugs 组的工件,您可以尝试以下列表中的另一个: https://mvnrepository.com/search?q=JSR305

参考:

【讨论】:

  • 对 gradle + IntelliJ IDEA 有帮助,感谢您的建议。
  • 在添加 HandlerInterceptorAdapter 后与 SB 2.3.6.RELEASE 有同样的问题。同样的解决方案也适用。Tks。
  • compileOnly 'com.google.code.findbugs:jsr305:3.0.2' 就足够了
【解决方案2】:

这也困扰着我。 在你的 pom 中试试这个:

    <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>annotations</artifactId>
        <version>3.0.1</version>
    </dependency>

这对我有用。

【讨论】:

  • 添加此依赖后问题仍然存在。我正在使用 Gradle,但这并不重要。
【解决方案3】:

我通过添加依赖项为 Gradle 解决了这个问题:

implementation 'com.google.code.findbugs:jsr305:3.0.2'

【讨论】:

    猜你喜欢
    • 2018-03-23
    • 1970-01-01
    • 2012-05-13
    • 2017-04-19
    • 2017-01-16
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多