簡體   English   中英

如何使用 maven 為包含包信息文件的項目生成測試 javadoc?

[英]How do I generate test javadoc for projects that contain package-info files with maven?

我正在嘗試為我正在處理的 Java 項目構建站點。 該項目包含幾個package-info.java文件。 該項目本身是一個使用 Eclipse Adoptium JDK 11.0.15.10-hotspot 構建的 Java 8 目標項目。 為了構建 javadoc,我使用了 maven javadoc 插件。 Maven 可以很好地構建主要的 javadoc。 但是,當它構建測試 javadoc 時,它會抱怨 package-info.class 文件包含錯誤的類。 例如:

javadoc: error - An internal exception has occurred.
        (com.sun.tools.javac.code.ClassFinder$BadClassFile: bad class file: C:\workspaces\releases\9.99.0\foo-bar-baz\target\classes\com\mycompany\foo\bar\baz\package-info.class
  class file contains wrong class: com\mycompany\foo\bar\baz\package-info
  Please remove or make sure it appears in the correct subdirectory of the classpath.)

自然地,我認為我的包名有一些拼寫錯誤。 但情況似乎並非如此。 java文件長這樣:

/**
 * <p>
 * Some really cool javadoc about this package.
 * </p>
 */
package com.mycompany.foo.bar.baz;

這看起來是對的。 所以我有點疑惑。 是什么導致 javadoc 可執行文件抱怨 package-info 包含錯誤的類?

我很好奇,所以我使用 javap -v 查看了類文件,得到了以下內容:

javap -v package-info.class
Classfile /C:/workspaces/releases/9.99.0/foo-bar-baz/target/classes/com/mycompany/foo/bar/baz/package-info.class
  Last modified Jun 5, 2022; size 142 bytes
  MD5 checksum xxxxxxxxxxxxxxxxxxxxxxxxxxx
  Compiled from "package-info.java"
interface com\mycompany\foo\bar\baz\package-info
  minor version: 0
  major version: 52
  flags: (0x1600) ACC_INTERFACE, ACC_ABSTRACT, ACC_SYNTHETIC
  this_class: #3                          // "com\\mycompany\\foo\\bar\\baz\\package-info"
  super_class: #5                         // java/lang/Object
  interfaces: 0, fields: 0, methods: 0, attributes: 1
Constant pool:
  #1 = Utf8               package-info.java
  #2 = Utf8               com\\mycompany\\foo\\bar\\baz\\package-info
  #3 = Class              #2              // "com\\mycompany\\foo\\bar\\baz\\package-info"
  #4 = Utf8               java/lang/Object
  #5 = Class              #4              // java/lang/Object
  #6 = Utf8               SourceFile
{
}
SourceFile: "package-info.java"

事實證明,生成這些包信息類的過程使用了不正確的斜杠。 在進行了一些挖掘之后,看起來這是 maven-compiler-plugin 3.10.0 ( https://issues.apache.org/jira/browse/MCOMPILER-485 ) 中存在缺陷的結果。 更新到 3.10.1 解決了這個問題。 或者,使用 3.10.0 版本在 Linux 中編譯也可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM