2016-04-21 9 views
5

Mam zamiar utworzyć niestandardowy generator Javadoc za pomocą Doclet, ale mam pewne problemy.Problemy z generowaniem niestandardowego javadoc; "nie mogę znaleźć docletu"

Podążam za the official documentation i początkowo miałem problem z dołączeniem do mojego projektu pliku tools.jar, ale udało mi się to naprawić.

Mój problem jest teraz, że po uruchomieniu tego polecenia ...

javadoc -doclet ListClass -docletpath . MyClass.java 

... Dostaję komunikat ...

javadoc: Błąd - Nie można odnaleźć doclet klasy listclass

Jak już wspomniałem, głównie śledzę tutoriale z oficjalnej dokumentacji, ale oto mój kod źródłowy.

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

} 

I 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) { 

    } 

} 

Więc co pytam to dlaczego ja dostaję błąd napisałem powyżej. Jeśli ktoś byłby w stanie dostarczyć bardziej wszechstronnego poradnika na temat tego, jak działa Doclet, to byłoby świetnie.


Uwaga: używam IntelliJ IDE do mojego projektu. Oto moja struktura katalogów:

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

Odpowiedz

1

Musisz skompilować plik listclass. Coś jak:

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

klas doclet są częścią słoika narzędzi, więc trzeba uwzględnić go jako zależność kompilacji.

Wtedy twoje polecenie

javadoc -doclet ListClass -docletpath . MyClass.java 

powinno działać.

edit

Dla projekcji struktury, jeśli kompilacji z katalogu głównego, należy odwołać się do plików poprzez ich podkatalogów i upewnij się jakieś absolutne okna Ścieżki są notowane dwukrotnie:

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

spowodowałoby to skompilowany plik listclass w katalogu głównym projektu, a stamtąd użyć polecenia javadoc:

javadoc -doclet ListClass -docletpath . ./src/MyClass.java 

Lepiej byłoby utworzyć katalog klas, aby umieścić skompilowane klasy, w przeciwieństwie do głównego katalogu projektu, ale pracuję tylko nad strukturą, którą podałeś. Aby uzyskać więcej informacji, zobacz dokumentację dla javac i javadoc.

+0

Dzięki. Uruchamianie 'javac -d. ListClass.java -cp C:/Program Files/Java/jdk1.8.0_66/lib/tools.jar' daje mi 'javac: file not found: ListClass.java', więc zmieniłem go na' ... src/ListClass .java ... '(zobacz moje zaktualizowane pytanie z hierarchią katalogów). Uruchomienie tego nowego polecenia (z 'src /') daje mi błąd 'javac: invalid flag: Files/Java/jdk1.8.0_66/lib/tools.jar'. –

+0

Jesteś całkiem blisko z tym, co masz. Myślę, że wystarczy umieścić ścieżkę w cudzysłowie i upewnić się, że robisz javac i javadoc z poprawnych katalogów .. zobacz moją aktualizację. – heisbrandon

+0

Dziękujemy - zaktualizowana odpowiedź rozwiązała mój problem. –

Powiązane problemy