OSGI版本注释的怪异Javadoc错误(带有JDK12)

发布于 2025-01-18 04:37:21 字数 630 浏览 3 评论 0 原文

随着从 Java 11 到 Java 12 的更改,我们现在在包含 OSGi 版本注释的包信息文件上生成 Javadoc 时看到一个奇怪的错误。

源代码是:

@Version("1.3.0")
package org.apache.jackrabbit.oak.commons;

import org.osgi.annotation.versioning.Version;

错误是:

[ERROR] C:\projects\apache\oak\trunk\oak-commons\src\main\java\org\apache\jackrabbit\oak\commons\package-info.java:17: error: unknown tag: Version
[ERROR] @Version("1.3.0")
[ERROR] ^

(查看详细信息和上下文)

是这是 Java 12 中的回归,还是注释的使用方式有问题,或者 Javadoc 的调用方式(通过 maven)是否有问题?

With the change from Java 11 to Java 12, we now see a weird error when generating Javadoc on package-info files containing OSGi version annotations.

The source code is:

@Version("1.3.0")
package org.apache.jackrabbit.oak.commons;

import org.osgi.annotation.versioning.Version;

The error is:

[ERROR] C:\projects\apache\oak\trunk\oak-commons\src\main\java\org\apache\jackrabbit\oak\commons\package-info.java:17: error: unknown tag: Version
[ERROR] @Version("1.3.0")
[ERROR] ^

(See details and context)

Is this a regression in Java 12, or is there something wrong in the way the annotations are used, or how Javadoc is invoked (through maven)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

因为看清所以看轻 2025-01-25 04:37:21

可能是 Javadoc 错误,因为 Javadoc 将 Java 注释视为 Javadoc 标签

解决方法 1:
禁用此 Javadoc 标记

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>                        
                    <tags>
                        <tag>
                            <name>Version</name>                            
                            <placement>X</placement>                            
                        </tag>
                    </tags>
                </configuration>
            </plugin>

解决方法 2:
在每个注释前面添加一个空的 Javadoc 块

/** */@Version("1.3.0")
package org.apache.jackrabbit.oak.commons;

Probably a Javadoc bug, because Javadoc considers the Java Annotation as a Javadoc Tag.

Workaround 1:
disable this Javadoc tag

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>                        
                    <tags>
                        <tag>
                            <name>Version</name>                            
                            <placement>X</placement>                            
                        </tag>
                    </tags>
                </configuration>
            </plugin>

Workaround 2:
add an empty Javadoc block in front of every annotation

/** */@Version("1.3.0")
package org.apache.jackrabbit.oak.commons;
汐鸠 2025-01-25 04:37:21

修复程序是升级到更新的JDK版本。

该问题影响了JDK 12,并将其固定在JDK 13中,

同样的问题也影响了OpenJDK 11.0.17,因为引入Javadoc回归的更改已退回。它固定在JDK 11.0.18中。 (请参阅

简化的repro:

package p;

import static java.lang.annotation.ElementType.PACKAGE;

import java.lang.annotation.Target;

@Target(PACKAGE)
public @interface A {}
@A
package p;
$ javadoc package-info.java A.java
...
package-info.java:1: error: unknown tag: A
@A
^

The fix is to upgrade to a newer JDK version.

The issue affects JDK 12, and was fixed in JDK 13 by JDK-8222091: Javadoc does not handle package annotations correctly on package-info.java.

The same issue also affects OpenJDK 11.0.17, because the change that introduced the javadoc regression was backported. It was fixed in JDK 11.0.18. (See https://bugs.openjdk.org/browse/JDK-8295850.)

Simplified repro:

package p;

import static java.lang.annotation.ElementType.PACKAGE;

import java.lang.annotation.Target;

@Target(PACKAGE)
public @interface A {}
@A
package p;
$ javadoc package-info.java A.java
...
package-info.java:1: error: unknown tag: A
@A
^
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文