2012-11-01 102 views
4

當我嘗試出口或生成javadoc的任何我的Javadoc評論類,我總是得到一個錯誤,直到最近它剛剛產生完全空的HTML文件。Eclipse JavaDoc生成失敗,出現IllegalArgumentException?

這是我之前收到的錯誤:

Constructing Javadoc information... 
Standard Doclet version 1.7.0_03 
Building tree for all the packages and classes... 
Generating C:\Users\James\Workspace\TestCLASS.html.… 
java.lang.IllegalArgumentException 
at sun.net.www.ParseUtil.decode(ParseUtil.j… 
at sun.misc.URLClassPath$FileLoader.<init>(… 
at sun.misc.URLClassPath$3.run(URLClassPath… 
at sun.misc.URLClassPath$3.run(URLClassPath… 
at java.security.AccessController.doPrivile… Method) 
at sun.misc.URLClassPath.getLoader(URLClass… 
at sun.misc.URLClassPath.getLoader(URLClass… 
at sun.misc.URLClassPath.findResource(URLCl… 
at java.net.URLClassLoader$2.run(URLClassLo… 
at java.net.URLClassLoader$2.run(URLClassLo… 
at java.security.AccessController.doPrivile… Method) 
at java.net.URLClassLoader.findResource(URL… 
at java.lang.ClassLoader.getResource(ClassL… 
at java.net.URLClassLoader.getResourceAsStr… 
at javax.xml.parsers.SecuritySupport$4.run(… 
at java.security.AccessController.doPrivile… Method) 
at javax.xml.parsers.SecuritySupport.getRes… 
at javax.xml.parsers.FactoryFinder.findJarS… 
at javax.xml.parsers.FactoryFinder.find(Fac… 
at javax.xml.parsers.SAXParserFactory.newIn… 
at com.sun.tools.doclets.internal.toolkit.b… 
at com.sun.tools.doclets.internal.toolkit.b… 
at com.sun.tools.doclets.formats.html.HtmlD… 
at com.sun.tools.doclets.internal.toolkit.A… 
at com.sun.tools.doclets.internal.toolkit.A… 
at com.sun.tools.doclets.internal.toolkit.A… 
at com.sun.tools.doclets.internal.toolkit.A… 
at com.sun.tools.doclets.formats.html.HtmlD… 
at com.sun.tools.doclets.standard.Standard.… 
at sun.reflect.NativeMethodAccessorImpl.inv… Method) 
at sun.reflect.NativeMethodAccessorImpl.inv… 
at sun.reflect.DelegatingMethodAccessorImpl… 
at java.lang.reflect.Method.invoke(Method.j… 
at com.sun.tools.javadoc.DocletInvoker.invo… 
at com.sun.tools.javadoc.DocletInvoker.star… 
at com.sun.tools.javadoc.Start.parseAndExec… 
at com.sun.tools.javadoc.Start.begin(Start.… 
at com.sun.tools.javadoc.Main.execute(Main.… 
at com.sun.tools.javadoc.Main.main(Main.jav… 
com.sun.tools.doclets.internal.toolkit… 
at com.sun.tools.doclets.internal.toolkit.b… 
at com.sun.tools.doclets.internal.toolkit.b… 
at com.sun.tools.doclets.formats.html.HtmlD… 
at com.sun.tools.doclets.internal.toolkit.A… 
at com.sun.tools.doclets.internal.toolkit.A… 
at com.sun.tools.doclets.internal.toolkit.A… 
at com.sun.tools.doclets.internal.toolkit.A… 
at com.sun.tools.doclets.formats.html.HtmlD… 
at com.sun.tools.doclets.standard.Standard.… 
at sun.reflect.NativeMethodAccessorImpl.inv… Method) 
at sun.reflect.NativeMethodAccessorImpl.inv… 
at sun.reflect.DelegatingMethodAccessorImpl… 
at java.lang.reflect.Method.invoke(Method.j… 
at com.sun.tools.javadoc.DocletInvoker.invo… 
at com.sun.tools.javadoc.DocletInvoker.star… 
at com.sun.tools.javadoc.Start.parseAndExec… 
at com.sun.tools.javadoc.Start.begin(Start.… 
at com.sun.tools.javadoc.Main.execute(Main.… 
at com.sun.tools.javadoc.Main.main(Main.jav… 
com.sun.tools.doclets.internal.toolkit… 
at com.sun.tools.doclets.formats.html.HtmlD… 

我相信它停止圍繞我開始告訴嚮導把HTML文件到一個文件夾命名文檔在我的工作區,唉這時候這個錯誤文件夾只有一個空的html文件,以我的項目中的其中一個類的名稱(通常是Stack.html或Entry.html)

另外我不幸刪除了TestClass類,因爲它只是一個測試,但這裏是我無法生成javadoc的堆棧類:

/** 
* Provides the Classes necessary to create a Stack data structure. 
*/ 
package courseworkone; 

import java.util.ArrayList; 

/** 
* Created on 22 Oct, 2012. 
* 
* @author James 
*/ 
public class Stack { 
/** 
* The dynamic array into which elements of the Stack are held. 
*/ 
private ArrayList<Entry> array; 
/** 
* The size of the Stack (The number of elements on the stack). 
*/ 
private int size; 

/** 
* Constructs an empty Stack with an initial size of 0. 
*/ 
public Stack() { 
    array = new ArrayList<Entry>(); 
    size = 0; 
} 

/** 
* Checks the number of elements in the stack. 
* 
* @return the number of elements in the stack 
*/ 
public final int size() { 
    return size; 
} 

/** 
* Adds an element to the stack, and increases the stack size by 1. 
* 
* @param i 
*   The element to be added to the stack 
*/ 
public final void push(final Entry i) { 
    // adds the Entry to the stack 
    array.add(i); 
    // increments the stack size by one 
    size++; 
} 

/** 
* Returns the element on the top of the stack. 
* 
* @return the top element in the stack 
*/ 
public final Entry top() { 
    // gets the element at the end of the ArrayList (top element) and 
    // returns it 
    return array.get(size - 1); 
} 

/** 
* Returns the element on the top of the stack and then removes that element 
* from the stack. 
* 
* @return the top element in the stack 
*/ 
public final Entry pop() { 
    // stores the element at the end of the ArrayList in a temporary 
    // variable 
    Entry mostRecentEntry = array.get(size - 1); 
    // removes the element from the end of the ArrayList 
    array.remove(size - 1); 
    // decrements the size of the stack by one 
    size--; 
    // returns the element at the end of the ArrayList 
    return mostRecentEntry; 
} 
} 

香港專業教育學院還用javadoc的嚮導javadoc的出口設置保存爲一個Ant腳本,這裏是它的內容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project default="javadoc"> 
    <target name="javadoc"> 
     <javadoc access="public" author="true" classpath="C:\Users\James\Documents\Eclipse\plugins\org.hamcrest.core_1.1.0.v20090501071000.jar;C:\Users\James\Documents\Eclipse\plugins\org.junit_4.10.0.v4_10_0_v20120426-0900\junit.jar" destdir="C:\Users\James\workspace\docs" doctitle="Stack Implementation" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="courseworkone,testcourseworkone" source="1.7" sourcepath="src;test" splitindex="true" use="true" version="true"/> 
    </target> 
</project> 

下面是Ant構建運行的控制檯輸出:

Apache Ant(TM) version 1.8.3 compiled on February 26 2012 
Apache Ant(TM) version 1.8.3 compiled on February 26 2012 
Setting ro project property: ant.file ->  C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\javadoc.xml 
Buildfile: C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\javadoc.xml 
Adding reference: ant.projectHelper 
Adding reference: ant.parsing.context 
Adding reference: ant.targets 
parsing buildfile C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\javadoc.xml with URI = file:/C:/Users/James/workspace/2ndYearWork/SoftEngCoursework1/javadoc.xml 
Setting ro project property: ant.project.default-target -> javadoc 
Project base dir set to: C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1 
+Target: 
+Target: javadoc 
Adding reference: ant.LocalProperties 
Setting ro project property: ant.project.invoked-targets -> javadoc 
Adding reference: eclipse.ant.targetVector 
Build sequence for target(s) `javadoc' is [javadoc] 
Complete build sequence is [javadoc, ] 
javadoc: 
parsing buildfile  jar:file:/C:/Users/James/Documents/Eclipse/plugins/org.apache.ant_1.8.3.v20120321-1730/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI =  jar:file:/C:/Users/James/Documents/Eclipse/plugins/org.apache.ant_1.8.3.v20120321-1730/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file 
    [javadoc] scanning C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\src for packages. 
dirset: Setup scanner in dir  C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\src with patternSet{ includes: [courseworkone, testcourseworkone] excludes: [] } 
    [javadoc] scanning C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\test for packages. 
dirset: Setup scanner in dir  C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\test with patternSet{ includes: [courseworkone, testcourseworkone] excludes: [] } 
    [javadoc] Generating Javadoc 
    [javadoc] Executing 'C:\Program Files (x86)\Java\jdk1.7.0_03\bin\javadoc.exe' with arguments: 
    [javadoc] '-public' 
    [javadoc] '-d' 
    [javadoc] 'C:\Users\James\workspace\docs' 
    [javadoc] '-splitindex' 
    [javadoc] '-use' 
    [javadoc] '-doctitle' 
    [javadoc] 'Stack Implementation' 
    [javadoc] '-classpath' 
    [javadoc]  'C:\Users\James\Documents\Eclipse\plugins\org.hamcrest.core_1.1.0.v20090501071000.jar;C:\Users\James\Documents\Eclipse\plugins\org.junit_4.10.0.v4_10_0_v20120426-0900\junit.jar' 
    [javadoc] '-version' 
    [javadoc] '-author' 
    [javadoc] '-sourcepath' 
    [javadoc]  'C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\src;C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\test' 
    [javadoc] '-source' 
    [javadoc] '1.7' 
    [javadoc] 'courseworkone' 
    [javadoc] 'testcourseworkone' 
    [javadoc] 
    [javadoc] The ' characters around the executable and arguments are 
    [javadoc] not part of the command. 
    [javadoc] Javadoc execution 
Execute:Java13CommandLauncher: Executing 'C:\Program Files (x86)\Java\jdk1.7.0_03\bin\javadoc.exe' with arguments: 
'-public' 
'-d' 
'C:\Users\James\workspace\docs' 
'-splitindex' 
'-use' 
'-doctitle' 
'Stack Implementation' 
'-classpath' 
'C:\Users\James\Documents\Eclipse\plugins\org.hamcrest.core_1.1.0.v20090501071000.jar;C:\Users\James\Documents\Eclipse\plugins\org.junit_4.10.0.v4_10_0_v20120426-0900\junit.jar' 
'-version' 
'-author' 
'-sourcepath' 
'C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\src;C:\Users\James\workspace\2ndYearWork\SoftEngCoursework1\test' 
'-source' 
'1.7' 
'courseworkone' 
'testcourseworkone' 

The ' characters around the executable and arguments are 
not part of the command. 
    [javadoc] Loading source files for package courseworkone... 
    [javadoc] Loading source files for package testcourseworkone... 
    [javadoc] Constructing Javadoc information... 
    [javadoc] Standard Doclet version 1.7.0_03 
    [javadoc] Building tree for all the packages and classes... 
    [javadoc] java.lang.IllegalArgumentException 
    [javadoc]  at sun.net.www.ParseUtil.decode(ParseUtil.java:202) 
    [javadoc]  at sun.misc.URLClassPath$FileLoader.<init>(URLClassPath.java:1016) 
    [javadoc]  at sun.misc.URLClassPath$3.run(URLClassPath.java:357) 
    [javadoc]  at sun.misc.URLClassPath$3.run(URLClassPath.java:352) 
    [javadoc]  at java.security.AccessController.doPrivileged(Native Method) 
    [javadoc]  at sun.misc.URLClassPath.getLoader(URLClassPath.java:351) 
    [javadoc]  at sun.misc.URLClassPath.getLoader(URLClassPath.java:328) 
    [javadoc]  at sun.misc.URLClassPath.findResource(URLClassPath.java:171) 
    [javadoc]  at java.net.URLClassLoader$2.run(URLClassLoader.java:551) 
    [javadoc]  at java.net.URLClassLoader$2.run(URLClassLoader.java:549) 
    [javadoc]  at java.security.AccessController.doPrivileged(Native Method) 
    [javadoc]  at java.net.URLClassLoader.findResource(URLClassLoader.java:548) 
    [javadoc]  at java.lang.ClassLoader.getResource(ClassLoader.java:1138) 
    [javadoc]  at java.net.URLClassLoader.getResourceAsStream(URLClassLoader.java:227) 
    [javadoc]  at javax.xml.parsers.SecuritySupport$4.run(SecuritySupport.java:94) 
    [javadoc]  at java.security.AccessController.doPrivileged(Native Method) 
    [javadoc]  at javax.xml.parsers.SecuritySupport.getResourceAsStream(SecuritySupport.java:87) 
    [javadoc]  at javax.xml.parsers.FactoryFinder.findJarServiceProvider(FactoryFinder.java:248) 
    [javadoc]  at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:221) 
    [javadoc]  at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:126) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.builders.LayoutParser.parseXML(LayoutParser.java:88) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.build(ClassBuilder.java:117) 
    [javadoc]  at com.sun.tools.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:186) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:183) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:125) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:83) 
    [javadoc]  at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:63) 
    [javadoc]  at com.sun.tools.doclets.standard.Standard.start(Standard.java:39) 
    [javadoc]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [javadoc]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    [javadoc]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    [javadoc]  at java.lang.reflect.Method.invoke(Method.java:601) 
    [javadoc]  at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:280) 
    [javadoc]  at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:160) 
    [javadoc]  at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:397) 
    [javadoc]  at com.sun.tools.javadoc.Start.begin(Start.java:167) 
    [javadoc]  at com.sun.tools.javadoc.Main.execute(Main.java:59) 
    [javadoc]  at com.sun.tools.javadoc.Main.main(Main.java:49) 
    [javadoc] com.sun.tools.doclets.internal.toolkit.util.DocletAbortException 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.builders.LayoutParser.parseXML(LayoutParser.java:95) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.build(ClassBuilder.java:117) 
    [javadoc]  at com.sun.tools.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:186) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:183) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:125) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:83) 
    [javadoc]  at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:63) 
    [javadoc]  at com.sun.tools.doclets.standard.Standard.start(Standard.java:39) 
    [javadoc]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [javadoc]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    [javadoc]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    [javadoc]  at java.lang.reflect.Method.invoke(Method.java:601) 
    [javadoc]  at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:280) 
    [javadoc]  at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:160) 
    [javadoc]  at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:397) 
    [javadoc]  at com.sun.tools.javadoc.Start.begin(Start.java:167) 
    [javadoc]  at com.sun.tools.javadoc.Main.execute(Main.java:59) 
    [javadoc]  at com.sun.tools.javadoc.Main.main(Main.java:49) 
    [javadoc] com.sun.tools.doclets.internal.toolkit.util.DocletAbortException 
    [javadoc]  at com.sun.tools.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:190) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:183) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:125) 
    [javadoc]  at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:83) 
    [javadoc]  at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:63) 
    [javadoc]  at com.sun.tools.doclets.standard.Standard.start(Standard.java:39) 
    [javadoc]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    [javadoc]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    [javadoc]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    [javadoc]  at java.lang.reflect.Method.invoke(Method.java:601) 
    [javadoc]  at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:280) 
    [javadoc]  at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:160) 
    [javadoc]  at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:397) 
    [javadoc]  at com.sun.tools.javadoc.Start.begin(Start.java:167) 
    [javadoc]  at com.sun.tools.javadoc.Main.execute(Main.java:59) 
    [javadoc]  at com.sun.tools.javadoc.Main.main(Main.java:49) 
    [javadoc] Generating C:\Users\James\workspace\docs\courseworkone\Entry.html... 
BUILD SUCCESSFUL 
Total time: 5 seconds 

我不知道爲什麼我不能生成的javadoc正常

任何想法?

+0

你可以發佈TESTClass java類的javadoc嗎? – giampaolo

+0

已經這樣做了,謝謝回覆。 –

+0

你有沒有解決這個問題? – giampaolo

回答

7

我檢查你的代碼/ doc和它似乎確定了我。我使用不同版本的JavaDoc進行了測試。所以我檢查了特定的異常。我發現這個:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219854

他們建議刪除類路徑環境變量。由於您使用的是Eclipse,因此構建和生成javadoc不需要在IDE之外進一步配置。檢查你的變量並刪除任何不必要的配置。

+0

感謝您的回覆,我試圖刪除類路徑,遺憾的是沒有成功。 –

+0

你如何生成javadoc?您是否使用'Project'菜單中的'Generate Javadoc ...'?還是不同? – giampaolo

+0

如果你使用的Eclipse Javadoc嚮導,您可以創建一個Ant任務,看看究竟是你的環境變量 – giampaolo

0

如果您使用的是Eclipse,請檢查InstalledJRE是否指向JAVA_HOME而沒有其他。我已經配置它指向JAVA_HOME/jre這是問題所在。

相關問題