JDK 11+ ve Javadoc


13
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.

Herkes kaynak sürümünü 1.8 (diğer forumlarda önerildiği gibi) değiştirmek zorunda kalmadan javadoc çalışmasını mümkün mü? JDK v11.0.5 kullanıyorum ve sorun hala devam ediyor (ayrıca JDK 12+ ile).

Düzenleme: Bu hata maven kaynaklanır ve maven-javadoc-eklentisi tarafından atılır. <source>8</source>Konfigürasyonda bile JDK 11+ için çalışmasını sağlayamadım .



Bu sorunun biraz daha ayrıntılı olması gerektiğini düşünüyorum. Maven kullanıyor musunuz? Projenizde modüller kullanıyor musunuz veya kullanmaya çalıştınız mı?
rü-

@ rü- haklısın, gönderiyi güncelledim, teşekkürler. Evet, maven'i çoklu modül kurulumuyla kullanıyorum.
Rafael Ibasco

Yanıtlar:


7

As OpenJDK sorun izleyicide önerilen bu Javadoc eklenti üzerinde kaynağını tanımlayan birlikte çalışılan:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
        <source>8</source>
    </configuration>
</plugin>

3
Muhtemelen soruyu tamamen okumadınız. OP açıkça şunları söyledi:Has anyone been able to make javadoc work without having to change the source version to 1.8
Arvind Kumar Avinash

1
benim için çalışıyor. Ben kullanıyorum: <configuration> <source> $ {java.version} </source> </configuration> ve özelliklerinde java 11 var. Sadece bir nedenle sürümü belirtmek zorunda kaldım.
ranma2913

Bunu Gradle'da nasıl yapabilirsiniz?
Raffi Khatchadourian

1

javadoc kullandığınız paketlere, örneğin belgelenmiş sınıflara bağlantılar üretir .../javase/11/docs/api. Yorumlarınız adlandırılmamış bir modüldeyken, hedefler değildir ve javadoc bu ikisini birleştiremez. Bir package-listveya element-listdosya üretir , bu nedenle adlandırılmamış modülleri (paketleri) adlandırılmış modüllerle karıştıramazsınız.

Javadoc'un üretmeye çalıştığı bağlantıları sınırlandırmanın bir yolunu bulamadım; kendi projeniz için modüller kullanmanız gerekebilir. Javadoc'u mutlu etmek için bu bana saçma geliyor. Sanırım bu, birçok insanın Java 8'e yapışmasının nedenlerinden sadece biri.


0

Önemli yoktu kırılma beri değişim Java 9 Doclet API kullanarak için

JEP 221: Basitleştirilmiş Doclet API'sı
Eski Doclet API'sini diğer standart, mevcut API'lardan yararlanan yeni basitleştirilmiş bir API ile değiştirir. Standart doclet yeni Doclet API'sını kullanmak için yeniden yazıldı

Mevcut API ve eski standart dokümantasyon mevcut, ancak modüller gibi yeni dil özelliklerini destekleyecek şekilde güncellenmedi

Eski API, com.sun.javadoc paketini kullanıyor

Doclet API'sı (Javadoc API olarak da bilinir), istemcilere, kaynağa katıştırılmış javadoc yorumları da dahil olmak üzere programların ve kitaplıkların kaynak düzeyinde yapısını denetleme mekanizması sağlar.

Yeni Doclet API'sını kullanmayı deneyebilirsiniz, örneklere bakın

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();
}

4
Yanılıyor olabilirim, ama burada çözüm kısmını gerçekten anlayamadım. Zaten okunan soru göz önüne alındığında .. Herkes kaynak sürümünü 1.8 değiştirmek zorunda kalmadan javadoc çalışması yapabildi ..
Naman

"Mevcut API ve eski standart doclet kullanılabilir, ancak modüller gibi yeni dil özelliklerini destekleyecek şekilde güncellenmemiş" Bu, javadoc'un 9 ve üzeri sürümler için bozulduğu anlamına mı geliyor? Ayrıca, benim sorun maven maven-javadoc-plugin bu hatayı bildirmektir. Yukarıda yayınlanan kodun nasıl yardımcı olacağından emin değilim.
Rafael Ibasco

1
@RafaelIbasco'nun doktor yazdığını sanmıyorum. Bu cevap faydalı görünmüyor.
rü-
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.