1

私は Ant に非常に慣れていません (私は Maven から来ました)。Eclipse ワークスペースにある Java プロジェクトをコンパイルするこの単純な Ant スクリプトにはいくつかの問題があります。

Ant スクリプト コードは次のとおりです。

<?xml version="1.0"?>
<project>

    <!-- ============================================ -->
    <!-- Load build properties                        -->
    <!-- ============================================ -->

    <property name="project.buildfile" value="build.num" />
    <property file="${project.buildfile}" />
    <property file="info.properties" />

    <!-- Elimina le cartelle contenenti le classi compilate ed i jar -->
    <target name="clean">
        <delete dir="../Release" />
        <!-- Elimina directory del jar finale -->
        <delete dir="bin" />
        <!-- Elimina directory delle classi compilate -->
    </target>

    <target name="compile">
        <mkdir dir="bin" />
        <javac srcdir="src" destdir="bin" />
    </target>
</project>

したがって、このスクリプトにはcleanという名前の最初のターゲットがあり、2 つのディレクトリをプロジェクトに削除するだけです (この部分はうまく機能します)。

もう 1 つのターゲットは、プロジェクトのコンパイルに関連する 2 つの単純なタスクを実装する compileという名前です。

1) プロジェクトにbinという名前のディレクトリを作成します(これで問題ありません)。

2) srcプロジェクト フォルダーにあるソースをコンパイルし、.class ファイルをbinディレクトリに配置します。

このantスクリプトを実行すると、次のエラーメッセージが表示されるため、ここで問題が発生します。

Buildfile: /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/build.xml
clean:
   [delete] Deleting directory /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/bin
compile:
    [mkdir] Created dir: /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/bin
    [javac] /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/build.xml:22: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 35 source files to /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/bin
    [javac] /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/src/com/techub/crystalice/xmlhandler/Settings.java:12: package org.apache.log4j does not exist
    [javac] import org.apache.log4j.Logger;
    [javac]                        ^
    [javac] /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/src/com/techub/crystalice/xmlhandler/Settings.java:14: package com.adamtaft.eb does not exist
    [javac] import com.adamtaft.eb.EventBusService;
    [javac]                       ^
    [javac] /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/src/com/techub/crystalice/xmlhandler/Settings.java:26: cannot find symbol
    [javac] symbol  : class Logger
    [javac] location: class com.techub.crystalice.xmlhandler.Settings
    [javac]     public static final Logger logger = Logger.getLogger("gui");
    [javac]                         ^
    [javac] /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/src/com/techub/crystalice/xmlhandler/Utils.java:9: package org.apache.log4j does not exist
    [javac] import org.apache.log4j.Logger;
    [javac]                        ^
    [javac] /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/src/com/techub/crystalice/xmlhandler/Utils.java:16: cannot find symbol
    [javac] symbol  : class Logger
    [javac] location: class com.techub.crystalice.xmlhandler.Utils
    [javac]     private static final Logger logger = Logger.getLogger("gui");
    [javac]                          ^
    [javac] /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/src/com/techub/crystalice/xmlhandler/Settings.java:26: cannot find symbol
    [javac] symbol  : variable Logger
    [javac] location: class com.techub.crystalice.xmlhandler.Settings
    [javac]     public static final Logger logger = Logger.getLogger("gui");
    [javac]                                         ^
    [javac] /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/src/com/techub/crystalice/xmlhandler/Settings.java:130: cannot find symbol
    [javac] symbol  : variable EventBusService
    [javac] location: class com.techub.crystalice.xmlhandler.Settings
    [javac]         EventBusService.publish(new SettingsEvent(this, SettingsEventType.UPDATED));
    [javac]         ^
    [javac] /home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/src/com/techub/crystalice/xmlhandler/Utils.java:16: cannot find symbol
    [javac] symbol  : variable Logger
    [javac] location: class com.techub.crystalice.xmlhandler.Utils
    [javac]     private static final Logger logger = Logger.getLogger("gui");
    [javac]                                          ^
    [javac] 8 errors
BUILD FAILED
/home/andrea/Documenti/XCloud/Implementazione/CrossPlatform/CrystalIceXMLHandler/Project/build.xml:22: Compile failed; see the compiler error output for details.
Total time: 1 second

これらのエラーが発生するのはなぜですか? どうすれば解決できますか?

TNX

アンドレア

4

5 に答える 5

1

ant が必要なライブラリ/jar を見つけることができないようです。次の 2 つの場所のいずれかに、必要なライブラリ/jar が必要です。

  1. ANT_HOME/lib
  2. ユーザー固有のディレクトリ、${user.home}/.ant/lib
于 2013-10-10T12:54:50.210 に答える
1

これを試して:

<target name="compile">
    <mkdir dir="bin" />
    <javac srcdir="src" destdir="bin" />
    <classpath>
        <fileset dir="${lib}">
            <include name="**/*.jar" />
        </fileset>
    </classpath>
</target>
于 2013-10-10T12:54:54.510 に答える
0

ant に関しては初心者なので、これがどれだけ役立つかわかりませんが、同じ問題に直面したとき、次の行を追加しました

<path id="project.classpath">
<pathelement location="${src.dir}" /> 
<path refid="external.jars" /> 
</path>

そしてまた

<jar destfile="${dist.dir}\jarnamehere.jar">
<fileset dir="${bin.dir}" includes="**/*.class" /> 
<zipgroupfileset dir="${lib.dir}" includes="**/*.jar" /> 
</jar>
于 2013-10-10T13:01:29.643 に答える