我試圖用Ant來編譯jsoup源代碼。我可以成功編譯,但無法通過測試。這裏是過程:如何通過Ant編譯jsoup?
jsoup版本:1.6.3;螞蟻版本:1.8.2
jsoup的源目錄
src/
我做了一個構建文件
src/build.xml
此文件包含
<project name="jsoup">
<target name="compile">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes" includeantruntime="false"/>
</target>
<target name="jar">
<mkdir dir="build/jar"/>
<jar destfile="build/jar/jsoup.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="StateTrace"/>
</manifest>
</jar>
</target>
<target name="run">
<!--<java jar="build/jar/jsoup.jar" input="htmls/index.html" fork="true"/>-->
<exec executable="java">
<arg value="-jar"/>
<arg value="build/jar/jsoup.jar"/>
<arg value="htmls/index.html"/>
</exec>
</target>
</project>
注: 1. StateTrace.java是我自己的測試程序(如下); 2. htmls/index.html是StateTrace.java的輸入。
String html; // contains the content in htmls/index.html
...
try{
Document doc = Jsoup.parse(html);
}catch(IOException e){e.printStackTrace();}
然後我編譯和使用Ant運行:
> ant compile
> ant jar
> ant run
在此之後,我有犯錯,如:
run:
[exec] Exception in thread "main" java.lang.ExceptionInInitializerError
[exec] at org.jsoup.nodes.Entities$EscapeMode.<clinit>(Unknown Source)
[exec] at org.jsoup.nodes.Document$OutputSettings.<init>(Unknown Source)
[exec] at org.jsoup.nodes.Document.<init>(Unknown Source)
[exec] at org.jsoup.parser.TreeBuilder.initialiseParse(Unknown Source)
[exec] at org.jsoup.parser.TreeBuilder.parse(Unknown Source)
[exec] at org.jsoup.parser.HtmlTreeBuilder.parse(Unknown Source)
[exec] at org.jsoup.parser.Parser.parse(Unknown Source)
[exec] at org.jsoup.Jsoup.parse(Unknown Source)
[exec] at StateTrace.main(Unknown Source)
[exec] Caused by: java.lang.NullPointerException
[exec] at java.util.Properties$LineReader.readLine(Properties.java:418)
[exec] at java.util.Properties.load0(Properties.java:337)
[exec] at java.util.Properties.load(Properties.java:325)
[exec] at org.jsoup.nodes.Entities.loadEntities(Unknown Source)
[exec] at org.jsoup.nodes.Entities.<clinit>(Unknown Source)
[exec] ... 9 more
[exec] Result: 1
BUILD SUCCESSFUL
Total time: 0 seconds
但是,如果我手動編譯所有的Java源代碼,像
javac src/org/jsoup/*.java src/org/jsoup/parser/*.java src/org/jsoup/examples/*.java src/org/jsoup/nodes/*.java src/org/jsoup/safety/*.java src/org/jsoup/select/*.java src/org/jsoup/helper/*.java
我可以com成功堆積並通過我的測試。
任何線索?謝謝!
恐怕你的問題沒有包含足夠的當前形式的信息。 build.xml不適用於最新版本的ant(例如1.8.2)以及htmls/index.html中的內容?你使用的是最新版本的jsoup源代碼(1.6.3)嗎? StateTrace不是jsoup的一部分 - 這是你自己的代碼嗎?我很高興看到你的問題,但我需要足夠的信息來重現它。 – richj 2012-07-07 00:35:12
@richj謝謝你的問題。你是對的。讓我提供更多信息。請參閱問題的更新版本。 – JackWM 2012-07-07 13:57:34
感謝您的額外信息。請在StateTrace.main中添加代碼行(...)調用Jsoup.parse(...)。我特別感興趣的是發送給html和[可選] baseUri參數的值。謝謝。 – richj 2012-07-09 12:28:04