2

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

コンパイルに成功し、テストに合格できました。

どんな手掛かり?ありがとう!

4

3 に答える 3

0

このbuild.xmlはant1.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にファイルがないと思います

于 2012-07-07T00:28:33.040 に答える
0

このエラーの根本的な原因は見つかりませんでした。しかし、私は最終的にそれを機能させました。

クラス ファイルは、ソース ファイルと同じディレクトリに保持する必要があるようです。したがって、build.xml は次のようになります。

<project>
<target name="compile">
    <mkdir dir="build/classes"/>
    <javac srcdir="src" destdir="src" includeantruntime="false"/>
</target>

<target name="clean">
    <delete dir="build"/>
</target>

<target name="jar">
    <mkdir dir="build/jar"/>
    <jar destfile="build/jar/jsoupIns.jar" basedir="src">
        <manifest>
            <attribute name="Main-Class" value="org.jsoup.examples.HtmlToPlainText"/>
        </manifest>
    </jar>
</target>

<target name="run">
    <!--<java jar="build/jar/jsoup.jar"  destdir="build/classes" input="htmls/index.html" fork="true"/>-->
    <exec executable="java">
        <arg value="-jar"/>
        <arg value="build/jar/jsoupIns.jar"/>
        <arg value="http://www.google.com"/>
    </exec>
</target>
</project>

この問題のより深い原因の手がかりを知っている場合は、お知らせください。ありがとう!

于 2012-07-07T15:10:04.793 に答える
0

jar ファイルには、jar ディレクトリ org/jsoup/nodes にファイル entities-base.properties および entities-full.properties が含まれている必要があります。これらのファイルを含めるには、ant jar タスクにファイルセットを追加するだけで十分でした。

<target name="local.all.build" >

   <echo message="Building ${local.app.jar.name}" />
   <mkdir dir="${top.dirs.class}"/>
   <mkdir dir="${top.dirs.jar}"/>

   <javac srcdir            = "${local.dirs.source}"
          destdir           = "${top.dirs.class}"
          debug             = "true"
          includeantruntime = "false" >
      <classpath refid="top.app.classpath"/>
      <compilerarg value="-Xlint:unchecked" />
   </javac>

   <jar jarfile   = "${top.dirs.jar}/${local.app.jar.name}"
        basedir   = "${top.dirs.class}" >
      <fileset dir      = "${top.dirs.source}"
               includes = "**/*.properties" />
   </jar>

</target>
于 2015-02-05T21:10:59.453 に答える