java - swagger-maven-plugin 在 Java 注释中触发 Javadoc 警告 : element value must be a constant expression (but it is!)

标签 java annotations javadoc maven-javadoc-plugin swagger-maven-plugin

Javadoc(通过 Maven)在我的一个 Java JAX-RS 接口(interface)方法签名中给我以下错误:

error: element value must be a constant expression

这是我的 JAX-RS 界面:

public interface FooResource {

  @Consumes(APPLICATION_FORM_URLENCODED_UTF_8)
  public void bar();

}

Javdoc 给出了 @Consumes 的错误。以下是 APPLICATION_FORM_URLENCODED_UTF_8 的定义,它出现在同一项目的 MyAppConstants 中:

public static final String APPLICATION_FORM_URLENCODED_UTF_8 =
    APPLICATION_FORM_URLENCODED + ";" + CHARSET_PARAMETER + "=UTF-8";

这里是 APPLICATION_FORM_URLENCODED 的定义,它出现在 javax.ws.rs.core.MediaType 中:

public final static String APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded";

这里是 CHARSET_PARAMETER 的定义,它也出现在 javax.ws.rs.core.MediaType 中:

public static final String CHARSET_PARAMETER = "charset";

现在我问你:APPLICATION_FORM_URLENCODED_UTF_8 在编译时不是常量怎么办?

错误消息并没有说我必须提供一个文字。它说我必须提供一个常量。那么这不是常数呢?

(我几乎可以发誓这一次有效但突然停止工作。)

更新: 找到原因,但还是不明白。

由于某些原因,仅在 POM 中包含 swagger-maven-plugin 就会触发此问题!我的代码根本没有改变,但是一旦我添加了以下依赖项,我就会突然收到针对我现有代码的 Javadoc 警告!!!

<dependency>
  <groupId>com.github.kongchen</groupId>
  <artifactId>swagger-maven-plugin</artifactId>
  <version>3.1.5</version>
</dependency>

单个依赖项如何使 Javadoc 在代码文件上以不同方式工作? swagger-maven-plugin 在做什么?

最佳答案

我最好的猜测是,发生这种情况是因为 swagger-maven-plugin 传递(通过 io.swagger:swagger-core:1.5.13)旧版本的javax.ws.rs:jsr311-api:1.1.1 中的 JAX-RS 规范。请注意,JAX-RS 2 工件 ID 是 javax.ws.rs-api,Maven 没有意识到它们是同一 JAR 的不同版本,并将它们作为依赖项拉入。我只能猜测 javax.ws.rs:jsr311-api 实际上并没有为相关变量使用常量。无论如何,当我扔掉 swagger-maven-plugin 并引入 io.swagger:swagger-annotations (这是我在这个项目中需要的所有文档)时,问题消失了。

参见 https://github.com/kongchen/swagger-maven-plugin/issues/543 .

关于java - swagger-maven-plugin 在 Java 注释中触发 Javadoc 警告 : element value must be a constant expression (but it is!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46496677/

相关文章:

java - EntityManager 始终为 null 并且未正确注入(inject)

groovy - 如何在 Groovy 中为多个目标定义注释?

java - 我们应该使用 JavaDoc 类扩展抽象类吗?

eclipse - 如何使用 Maven Eclipse 插件从其他存储库下载源代码和 javadoc Artifact ?

java - 如何通过消除所有空/空条目来折叠二维数组

java - 如何命名自 JPA 2.1 以来的 ManyToOne 引用的外键约束?

java - SonarQube - 可以通过存储外部可变对象来公开内部表示

java - Cloud Foundry 数据源oracle JDBC超时为什么?

多个注释中的 Django Count()

java - 你如何阅读 JavaDoc?