2016-04-21 24 views
5

Sto provando a creare un generatore Javadoc personalizzato utilizzando Doclet, ma sto riscontrando alcuni problemi.Problemi con la generazione di javadoc personalizzati; 'can not find doclet'

Sto seguendo the official documentation e inizialmente ho avuto problemi con l'inclusione del file tools.jar nel mio progetto, ma sono riuscito a risolvere il problema.

Il mio problema ora è che dopo l'esecuzione di questo comando ...

javadoc -doclet ListClass -docletpath . MyClass.java 

... Sto ottenendo il messaggio ...

javadoc: errore - Impossibile trovare doclet classe listclass

Come ho detto, ho seguito principalmente i tutorial dalla documentazione ufficiale, ma qui è il mio codice di riferimento.

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

} 

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

    } 

} 

Quindi quello che chiedo è perché sto ottenendo l'errore che ho postato sopra. Se qualcuno fosse in grado di fornire una guida più completa su come funziona Doclet sarebbe bello.


Nota: sto utilizzando IntelliJ IDE per il mio progetto. Qui è la mia struttura di directory:

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

risposta

1

devi compilare il file listclass. Qualcosa di simile:

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

classi Doclet fanno parte del vaso strumenti, quindi avrai bisogno di includere come dipendenza in fase di compilazione.

Poi il vostro comando

javadoc -doclet ListClass -docletpath . MyClass.java 

dovrebbe funzionare.

modificare

Per te struttura del progetto, se si sta compilando dalla directory principale, assicurarsi di fare riferimento i file attraverso le loro sottodirectory, e assicurarsi che tutti i percorsi di Windows assoluti sono doppi apici:

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

Ciò creerebbe un file listclass compilato alla base del progetto, e da lì utilizzare il comando javadoc:

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

Sarebbe preferibile creare una directory classes per posizionare le classi compilate, anziché nella radice del progetto, ma sto solo lavorando con la struttura che hai fornito. Vedere la documentazione per javac e javadoc per ulteriori informazioni.

+0

Grazie. Esecuzione di 'javac -d. ListClass.java -cp C:/Programmi/Java/jdk1.8.0_66/lib/tools.jar' mi fornisce 'javac: file non trovato: ListClass.java', quindi l'ho cambiato in' ... src/ListClass .java ... '(vedi la mia domanda aggiornata con la gerarchia della directory). Ora eseguendo questo nuovo comando (con 'src /') mi dà l'errore 'javac: invalid flag: Files/Java/jdk1.8.0_66/lib/tools.jar'. –

+0

Sei molto vicino a quello che hai. Penso che devi solo inserire il percorso tra virgolette e assicurarti di eseguire javac e javadoc dalle directory corrette. Guarda il mio aggiornamento. – heisbrandon

+0

Grazie - la tua risposta aggiornata ha risolto il mio problema. –