2010-03-01 13 views
6

Her iki kaynak ve sınıf dosyasını içeren myCode.jar'dan Javadoc oluşturmam gerekiyor. Kavanozu çıkarmadan yapabilir miyim?Bir .jar dosyası içindeki kaynaklardan javadoc nasıl oluşturulur?

http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/javadoc.html#classpath göre ben bu yüzden bu şekilde yapmak mümkün olmalıdır: Öyle görünüyor

javadoc: error - File not found: "net\kem\jmx\CacheManagerMBean.java" 
[search path for source files: [myCode.jar]] 
[search path for class files: [C:\Program Files\Java\jdk1.5.0_17\jre\lib\rt.jar, C:\Program Files\Java\jdk1.5.0_17\jre\lib\jsse.jar, 
C:\Program Files\Java\jdk1.5.0_17\jre\lib\jce.jar, C:\Program Files\Java\jdk1.5.0_17\jre\lib\charsets.jar, C:\Program Files\Java\jd 
k1.5.0_17\jre\lib\ext\dnsns.jar, C:\Program Files\Java\jdk1.5.0_17\jre\lib\ext\localedata.jar, C:\Program Files\Java\jdk1.5.0_17\jre 
\lib\ext\sunjce_provider.jar, C:\Program Files\Java\jdk1.5.0_17\jre\lib\ext\sunpkcs11.jar, C:\Projects\RenderClusterController\WebCo 
ntent\WEB-INF\lib\makoRenderJMX.jar]] 
[done in 360 ms] 
1 error 

javadoc kavanoz içinde kaynak dosyaları bulamıyor: C:\>javadoc -d docs -classpath myCode.jar net\kem\jmx\CacheManagerMBean.java Ancak, aşağıdaki hatayı alıyorum. Kaynakların orada olduğuna eminim.

Herhangi bir öneriniz var mı?

+0

Çift Kavanozun gerçekten kaynak dosyaları içerdiğini kontrol edin (bir zip dosyası olarak açın) file) Ayrıca \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\} – mikek3332002

cevap

3

Bazı ilk testler işe yaramadığını gösterir (en azından burada bulunan OpenJDK 1.6.0_20'de).

Yani, (bir mercurial web-interface göz atılabilir) kaynağına baktı. Javadoc (burada var olandan, burada sahip olduğumdan farklı olabilir), işlem için Javac'ın biraz bit kullanır ve her ikisi de kaynak dosyalarına erişim uygulamak için javax.tools.JavaFileManager arayüzünü kullanıyor gibi görünür. alt-arayüz StandardJavaFileManager.

This file manager creates file objects representing regular files, zip file entries, or entries in similar file system based containers.

Ama burada (JavaDocTool.getRootDocImpl() olarak) nasıl kullanıldığına:

148     String name = it.head; 
    149     if (!docClasses && name.endsWith(".java") && new File(name).exists()) { 
    150      JavaFileObject fo = fm.getJavaFileObjects(name).iterator().next(); 
    151      docenv.notice("main.Loading_source_file", name); 
    152      JCCompilationUnit tree = parse(fo); 
    153      classTrees.append(tree); 
    154     } else if (isValidPackageName(name)) { 
    155      names = names.append(name); 
    156     } else if (name.endsWith(".java")) { 
    157      docenv.error(null, "main.file_not_found", name); 
    158     } else { 
    159      docenv.error(null, "main.illegal_package_name", name); 
    160     } 

ilk dava bir ile çağrınızda geçerli olacak

This interface iddialar zip dosyası girdilerini erişmek mümkün .java dosya - ama dosya sisteminde bir dosya olarak mevcut olmadığından (new File(name).exists() false döndürür), bu yardımcı olmaz ve bunun yerine üçüncü bir "dosya bulunamadı" hatasıyla karşılaşırsınız.

O daha uygun biriyle bu durumu değiştirirken işe yarayabilir benziyor (gibi !fm.getJavaFileObjects(name).isEmpty() - bağlam aslında ben şimdi onay vermedi kavanoz/zip dosyaları, içinde görünen bir JavaFileManager başlatılır sağlanan

.

Kaynak kavanozunuzu paketinden çıkarmanız ya da javac uygulamanızın yamasını sağlamanız (tercihen ana javac kaynağına katkıda bulunmanız gerekir) .

İlgili konular