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.
다른 포럼에서 제안한 것처럼 소스 버전을 1.8로 변경하지 않고도 javadoc을 사용할 수 있습니까? JDK v11.0.5를 사용하고 있는데 여전히 문제가 있습니다 (JDK 12+에서도).
편집 :이 오류는 maven에서 시작되었으며 maven-javadoc-plugin에 의해 발생합니다. <source>8</source>
구성 에서도 JDK 11 이상에서 작동하지 못했습니다 .
답변
OpenJDK 이슈 트래커에서 제안한 바와 같이, 이것은 Javadoc 플러그인에서 소스를 정의 할 때 해결 될 수 있습니다 :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>8</source>
</configuration>
</plugin>
답변
javadoc 은 사용하는 패키지, 예를 들어 문서화 된 클래스에 대한 링크를 생성합니다 .../javase/11/docs/api
. 귀하의 의견은 이름이없는 모듈에 있지만 대상은 그렇지 않으며 javadoc 은이 두 가지를 결합 할 수 없습니다. package-list
또는 element-list
파일을 생성 하므로 명명되지 않은 모듈 (패키지)을 명명 된 모듈과 혼합 할 수 없습니다.
javadoc이 생성하려고하는 링크를 제한하는 방법을 찾지 못했습니다. 따라서 자신의 프로젝트에 모듈을 사용해야 할 수도 있습니다. 이것은 javadoc을 행복하게하기 위해 나에게 어리석은 것처럼 보입니다. 나는 이것이 많은 사람들이 Java 8을 고수하는 이유 중 하나 일뿐이라고 생각합니다.
답변
중요한 있었다 차단 이후 변화 자바 (9) 도크 렛 API를 사용하는이
JEP 221 : 단순화
된 Doclet API 기존 Doclet API를 기존의 다른 표준 API를 활용하는 새로운 단순화 된 API로 대체합니다. 표준 Doclet은 새로운 Doclet API를 사용하도록 재 작성되었습니다기존 API 및 이전 표준 Doclet을 사용할 수 있지만 모듈과 같은 새로운 언어 기능을 지원하도록 업데이트되지 않았습니다
이전 API는 com.sun.javadoc 패키지를 사용하고 있습니다
Doclet API (Javadoc API라고도 함)는 클라이언트가 소스에 포함 된 javadoc 주석을 포함하여 프로그램 및 라이브러리의 소스 레벨 구조를 검사 할 수있는 메커니즘을 제공합니다.
새로운 Doclet API를 사용해 볼 수 있습니다 ( 예제 참조).
public class BasicDoclet implements Doclet { @Override public void init(Locale locale, Reporter reporter) { } @Override public String getName() { // For this doclet, the name of the doclet is just the // simple name of the class. The name may be used in // messages related to this doclet, such as in command-line // help when doclet-specific options are provided. return getClass().getSimpleName(); }