Exit code: 1 - javadoc: error - The code being documented uses packages in the unnamed module, but the packages defined in https://docs.oracle.com/en/java/javase/11/docs/api/ are in named modules.
Czy ktoś był w stanie sprawić, że javadoc działa bez konieczności zmiany wersji źródłowej na 1.8 (jak sugerowano na innych forach)? Używam JDK 11.0.5 i problem nadal występuje (również z JDK 12+).
Edycja: Ten błąd pochodzi z maven i jest zgłaszany przez wtyczkę maven-javadoc. Nie byłem w stanie sprawić, aby działał dla JDK 11+, nawet przy <source>8</source>
konfiguracji.
Odpowiedzi:
Tak jak zasugerowano w narzędziu do śledzenia problemów OpenJDK, można to obejść, definiując źródło wtyczki Javadoc:
źródło
Has anyone been able to make javadoc work without having to change the source version to 1.8
javadoc tworzy linki do pakietów, których używasz, np. do klas udokumentowanych w
.../javase/11/docs/api
. Podczas gdy twoje komentarze znajdują się w nienazwanym module, cele nie są, a javadoc nie może połączyć tych dwóch. Tworzy albo plik,package-list
alboelement-list
plik, więc nie można mieszać nienazwanych modułów (pakietów) z nazwanymi modułami.Nie znalazłem sposobu na ograniczenie linków, które javadoc próbuje stworzyć; więc być może będziesz musiał użyć modułów do własnego projektu. To wydaje mi się absurdalne, po prostu, aby uszczęśliwić javadoc. Sądzę, że jest to tylko jeden z powodów, dla których tak wiele osób trzyma się Java 8.
źródło
Nastąpiła znacząca przełomowa zmiana od Java 9 dla używania Doclet API
Stare API używa com.sun.javadoc pakietu
Możesz spróbować użyć nowego interfejsu Doclet API, zobacz przykłady
źródło