2016-04-21 4 views
5

Ich habe einen eigenen Javadoc-Generator mit Doclet erstellen, aber ich bin auf einige Probleme stoßen.Probleme beim Generieren von benutzerdefiniertem Javadoc; 'Ich kann Doclet nicht finden'

Ich folge the official documentation und hatte zunächst Probleme mit der Aufnahme der tools.jar Datei in meinem Projekt, aber ich habe es geschafft, das zu beheben.

jetzt Mein Problem ist, dass Sie diesen Befehl nach dem Ausführen ...

javadoc -doclet ListClass -docletpath . MyClass.java 

... Ich erhalte die Nachricht ...

javadoc: Fehler - nicht doclet Klasse listclass gefunden

Wie gesagt, ich habe die Tutorials aus der offiziellen Dokumentation größtenteils verfolgt, aber hier ist mein Code als Referenz.

ListClass.java:

import com.sun.javadoc.*; 

public class ListClass { 

    public static boolean start(RootDoc root) { 
     ClassDoc[] classes = root.classes(); 
     for (int i = 0; i < classes.length; ++i) { 
      System.out.println(classes[i]); 
     } 
     return true; 
    } 

} 

Und MyClass.java:

/** 
* Documentation for my class 
*/ 
public class MyClass { 

    public static void main(String[] args) { 

    } 

    /** 
    * Documentation for my static void method 
    * 
    * @param param This is the parameter it takes in 
    */ 
    public static void myStaticVoidMethod(String param) { 

    } 

} 

Also, was ich frage ist, warum ich die Fehlermeldung erhalte ich oben geschrieben. Wenn jemand in der Lage wäre, eine umfassendere Anleitung zu geben, wie Doclet funktioniert, wäre das auch großartig.


Hinweis: Ich verwende IntelliJ IDE für mein Projekt. Hier ist meine Verzeichnisstruktur:

  • .idea
    • ...
  • aus
    • ...
  • src
    • ListClass.java
    • MyClass.java
  • JavadocGenerator.iml

Antwort

1

Sie benötigen listclass Datei zu kompilieren. Etwas wie:

javac -d . ListClass.java -cp /path/to/tools.jar 

Doclet Klassen sind Teil der Glas-Tools, so dass Sie es als Ihre Kompilierung-Abhängigkeit enthalten müssen.

Dann wird Ihr Befehl

javadoc -doclet ListClass -docletpath . MyClass.java 

sollte funktionieren.

bearbeiten

Für Sie Projektstruktur, wenn Sie aus dem Stammverzeichnis sind kompilieren, stellen Sie sicher, dass Ihre Dateien durch ihre Unterverzeichnisse verweisen, und stellen Sie sicher, dass alle absolute Windows-Pfade sind in doppelten Anführungszeichen:

javadoc -doclet ListClass -docletpath . ./src/MyClass.java 
:
javac -d . ./src/ListClass.java -cp "C:/Program Files/Java/jdk1.8.0_66/lib/tools.jar" 

Dies würde eine kompilierte Datei listclass an der Wurzel des Projekts und von dort benutzen, um Ihre javadoc Befehl erstellen

Es wäre besser, ein Klassenverzeichnis zu erstellen, um die kompilierten Klassen im Gegensatz zum Stammverzeichnis des Projekts zu platzieren, aber ich arbeite nur mit der von Ihnen bereitgestellten Struktur. Weitere Informationen finden Sie in der Dokumentation für javac und javadoc.

+0

Danke. Lauf 'javac -d. ListClass.java -cp C:/Programme/Java/jdk1.8.0_66/lib/tools.jar' gibt mir 'javac: Datei nicht gefunden: ListClass.java', also habe ich es in' ... src/ListClass geändert .java ... '(siehe meine aktualisierte Frage mit der Verzeichnishierarchie). Wenn ich nun diesen neuen Befehl (mit dem 'src /') starte, bekomme ich den Fehler 'javac: invalid flag: Files/Java/jdk1.8.0_66/lib/tools.jar'. –

+0

Sie sind ziemlich nah mit dem, was Sie haben. Ich denke, Sie müssen nur den Pfad in Anführungszeichen setzen, und stellen Sie sicher, dass Sie javac und javadoc aus den richtigen Verzeichnissen ausführen .. siehe mein Update. – heisbrandon

+0

Danke - Ihre aktualisierte Antwort hat mein Problem gelöst. –

Verwandte Themen