java - 如何通过Ant编译jsoup?

标签 java ant build compilation jsoup

我尝试使用 Ant 来编译 jsoup 源代码。我可以编译成功,但是不能通过测试。过程如下:

jsoup 版本:1.6.3; Ant 版本: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

我可以成功编译并通过我的测试。

有什么线索吗?谢谢!

最佳答案

此 build.xml 适用于 ant 1.8.2:

<?xml version="1.0"?>
<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="org.jsoup.examples.HtmlToPlainText"/>
            </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>

...等待更多信息... ...直到它出现,我的猜测是 htmls/index.html 中没有文件

关于java - 如何通过Ant编译jsoup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370569/

相关文章:

javac : invalid target release: 1. 8

JavaFX TitledPane 无法覆盖 -fx-text-fill

java - Tomcat:当连接数超过线程数时会发生什么?

java - Ant和XML配置文件解析

java - 如何让 Maven 自动重试(从失败的模块恢复)?

c++ - 未定义对 `vtable for implementation' 错误的引用

eclipse - 忽略带有注释的 Ant 警告

java - 从两个单独的类读取 Java 套接字,最新的线程干扰旧线程

ant - Ant 中的文本操作

class - 在 ANT 中制作 JAR 时如何有条件地包含 list 选项