(Nein, das ist kein Duplikat, siehe unten)
Für das, was es wert ist, ist dies Oracle JDK, 7u72.
Ich kann es nicht schaffen, mich mit der Paketbeschreibung zu verbinden, obwohl ich das tun muss, da dort wichtige Informationen erwähnt werden, aber ich schaffe es nicht jedes Mal; Wenn ich probiere {@link my.package.name}
oder sage den Leuten zu gehen und @see my.package.name
(oder sogar einen Link zu einer Paketbeschreibung einer externen Bibliothek), meldet das javadoc-Tool, dass es den Link nicht finden kann ...
Also, wie mache ich solche Links?
OK, also, es wird gesagt, dass hier die Antwort ist, aber nein :
Also, das ist kein Duplikat.
Es ist nicht so einfach wie die Verwendung der {@link package.class#member}
-Tagsyntax, aber Sie können eine Verknüpfung zur Paketdokumentation herstellen, indem Sie das direkte <a href="...">
HTML-Markup verwenden. Der Schlüssel ist, den richtigen URI zu kennen, der in das href -Attribut eingefügt werden soll.
Javadoc gibt Dateien in einer Verzeichnisstruktur aus entspricht Ihrer Paketstruktur. Für jedes Paket ist seine Beschreibung immer in einer Datei namens package-summary.html
enthalten, die sich im entsprechenden Verzeichnis befindet. Der eigentliche Beschreibungstext befindet sich an oder in der Nähe eines bestimmten Ankers, der je nach Doclet-Version variiert. Der Ankername kann als Fragment-ID an einen der folgenden URIs angehängt werden, wenn Sie direkt zum Beschreibungshauptteil springen möchten anstelle der Oberseite der Paketseite.
description
bezeichnet und als Fragmentbezeichner #description
. package.description
umbenannt, dargestellt als Fragmentbezeichner #package.description
. In jeder Klasse verweisen Sie auf das eigene -Paket:
<a href="package-summary.html">link text</a>
In der Klasse com.example.foo.MyClass
, um auf das Paket com.example
übergeordnetes * zu verweisen:
<a href="../package-summary.html">link text</a>
In der Klasse com.example.foo.MyClass
, um auf das Paket com.example.bar
Geschwister * zu verweisen:
<a href="../bar/package-summary.html">link text</a>
In der Klasse com.example.foo.MyClass
, um auf das com.example.foo.fizz.buzz
untergeordnete * Paket zu verweisen:
<a href="fizz/buzz/package-summary.html">link text</a>
Diese Beispiele gehen alle davon aus, dass die Zielpakete tatsächlich Pakete sind; Mit anderen Worten, diese Klassen existieren auf dieser Ebene. Wenn stattdessen com.example
ein gemeinsames Präfix für alle Pakete wäre, aber nicht eine einzelne deklarierte Klasse package com.example;
, dann ist das zweite obige Beispiel ein toter Link , da bei com / example / package-summary.html .
Der größte Nachteil ist, dass Refactoring-Tools wahrscheinlich keine Links in Ihrem Javadoc reparieren, wenn Sie Ihre Pakete umstrukturieren oder umbenennen.
* Ja, ich verstehe, dass Pakete in Java logischerweise keine offiziellen "Eltern" - oder "Kind" -Beziehungen haben. Die Verzeichnisstruktur, die zum Organisieren von Dateien in Pakete verwendet wird, hat jedoch eine Eltern-Kind-Semantik, und darauf beziehe ich mich hier.
Die verknüpfte Dokumentation funktioniert im Wesentlichen genauso wie die lokale Dokumentation, jedoch mit unterschiedlichen Anker-Tag-HREF-Zielen. Wenn Sie beispielsweise eine Verknüpfung mit öffentlicher Dokumentation im Web herstellen, wird eine absolute http://
-Adresse verwendet. Die Verknüpfung mit einer anderen Bibliothek an einem anderen Ort in Ihrem lokalen oder Unternehmens-Dateisystem könnte auch relative oder absolute Pfade verwenden.
Beachten Sie, dass bei der Verwendung der Link-Funktion des Javadoc-Tools grundsätzlich dasselbe geschieht. Er liest eine package-list
-Datei aus der verknüpften Verzeichnisstruktur, um zu wissen, welche Pakete auf der Remoteseite existieren, und dann verwendet jede referenzierte Dokumentation aus diesen Paketen den entsprechenden URI in den generierten Links.
Nehmen Sie beispielsweise an, dass Sie eine Verknüpfung mit der Java-API herstellen:
http://docs.oracle.com/javase/7/docs/api/
Beziehen Sie sich dann auf die Paketbeschreibung java.util.concurrent , hängen Sie die Verzeichnisstruktur java/util/concurrent/
an den Basis-URI an und fügen Sie am Ende package-summary.html
hinzu. (Oder kopieren Sie es einfach von Ihrem Webbrowser.) :-)
Auch hier gibt es einen Nachteil: Wenn Sie die externe API-Dokumentation verschieben ( ähem , Oracle), können Ihre {@link ...}
-Tags funktionieren, wenn Sie Ihre Javadoc-Konfiguration auf einen neuen Link verweisen Jedes handschriftliche HTML-Markup für diese Paketdateien ist veraltet.