Ant build.xml cannot find symbol in included .jar

10,898

Try <fileset dir="${lib.dir}"> <include name="**/*.jar"/> </fileset>

Share:
10,898
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin about 2 years

    I am migrating multiple projects from a purely desktop Eclipse dev & build to a buildserver (Jenkins-CI) environment. For this project, I can run the build.xml -> Run As -> Ant build successfully under Eclipse, but it fails when running on the buildserver. I feel I'm missing something elementary, but I've spent far to many hours looking at this. Any ideas what is missing?

    <path id="lib-classpath">
        <!-- create a path to the lib files used in the javac compilation -->
        <fileset dir="${lib.dir}">
            <include name="*.jar"/>
        </fileset>
    </path>
    
    <target name="init">
        <mkdir dir="${bin.dir}"/>
        <mkdir dir="${lib.dir}"/>
    </target>
    
    <target name="check-DatabaseUtil">
        <property name="DatabaseUtil.dir" value="../../DatabaseUtil/workspace" />
        <property name="DatabaseUtil.jar" value="DatabaseUtil.jar" />
        <echo message="checking for ${DatabaseUtil.dir}/${DatabaseUtil.jar}..."/>
        <available file="${DatabaseUtil.dir}/${DatabaseUtil.jar}" property="DatabaseUtil.present"/>
    </target>
    
    <target name="do-if-DatabaseUtil" depends="check-DatabaseUtil" if="DatabaseUtil.present">
        <echo message="copy ${DatabaseUtil.dir}/${DatabaseUtil.jar} into directory ${lib.dir} ..."/>
        <copy file="${DatabaseUtil.dir}/${DatabaseUtil.jar}" todir="${lib.dir}" />
    </target>
    
    <target name="compile" depends="init, do-if-DatabaseUtil">
        <echo message="compile from directory ${source.dir} into directory ${bin.dir} ..." />
        <javac srcdir="${source.dir}" destdir="${bin.dir}">
            <classpath refid="lib-classpath"/>
        </javac>
    </target>
    
    <target name="jar" depends="compile">
        <property name="jar.name" value="${ant.project.name}.jar"/>
        <echo message="create file ${jar.name} ..." />
        <jar basedir="${bin.dir}" jarfile="${jar.name}">
            <fileset dir="${lib.dir}">
                <!-- include the library .jars into the file project .jar file -->
                <include name="*.jar"/>
            </fileset>
        </jar>
        <echo message="Done" />
    </target>
    

    when I run the build on the buildserver using Jenkins, it apparently fails to find the DatabaseUtil.jar that is present in the lib dir. Here's the recorded console output:

    Ant compile failure:

    Started by user anonymous
    Building in workspace /var/lib/jenkins/workspace/ClassifyProcessor
    Updating svn://10.10.10.194/proficient/ClassifyProcessor/trunk at revision '2014-10-23T11:41:59.153 -0400'
    U         build.xml
    U         .classpath
    At revision 5181
    [ClassifyProcessor] $ ant
    Buildfile: /var/lib/jenkins/workspace/ClassifyProcessor/build.xml
         [echo] Starting project ClassifyProcessor using Java 1.7 and Apache Ant(TM) version 1.8.2 compiled on September 22 2011
    Trying to override old definition of task javac
         [echo] Staring project ClassifyProcessor in /var/lib/jenkins/workspace/ClassifyProcessor ...
    
    init:
    
    check-DatabaseUtil:
         [echo] checking for ../../DatabaseUtil/workspace/DatabaseUtil.jar...
    
    do-if-DatabaseUtil:
    
    compile:
         [echo] compile from directory /var/lib/jenkins/workspace/ClassifyProcessor/src into directory /var/lib/jenkins/workspace/ClassifyProcessor/bin ...
        [javac] Compiling 32 source files to /var/lib/jenkins/workspace/ClassifyProcessor/bin
        [javac] /var/lib/jenkins/workspace/ClassifyProcessor/src/com/hco/processor/Main.java:81: error: cannot find symbol
        [javac]             fmsList = DatabaseService.getFaxMessageStatusRecordsByStatus("Converted", "Inbound", props.getFaxSourceList(), db_connection);
        [javac]                                      ^
        [javac]   symbol:   method getFaxMessageStatusRecordsByStatus(String,String,String[],Connection)
        [javac]   location: class DatabaseService
        [javac] /var/lib/jenkins/workspace/ClassifyProcessor/src/com/hco/processor/Main.java:107: error: cannot find symbol
        [javac]                     FaxMessageStatus fms = DatabaseService.getFaxMessageStatusRecordByIdAndStatus(fmsId, "Converted",  db_connection);
        [javac]                                                           ^
        [javac]   symbol:   method getFaxMessageStatusRecordByIdAndStatus(int,String,Connection)
        [javac]   location: class DatabaseService
        [javac] /var/lib/jenkins/workspace/ClassifyProcessor/src/com/hco/processor/Main.java:346: error: method insertInErrorLog in class DatabaseService cannot be applied to given types;
        [javac]                         DatabaseService.insertInErrorLog(faxMessageStatus.getHost(), "Classify", "Classify", cte.getMessage(), "WARNING", "", faxJobId, fmsId, db_connection);
        [javac]                                        ^
        [javac]   required: String,String,String,String,String,String,Connection
        [javac]   found: String,String,String,String,String,String,int,int,Connection
        [javac]   reason: actual and formal argument lists differ in length
        [javac] /var/lib/jenkins/workspace/ClassifyProcessor/src/com/hco/processor/Main.java:359: error: method insertInErrorLog in class DatabaseService cannot be applied to given types;
        [javac]                         DatabaseService.insertInErrorLog(faxMessageStatus.getHost(), "Classify", "Classify", e.getMessage(), "FATAL", "", faxJobId, fmsId, db_connection);
        [javac]                                        ^
        [javac]   required: String,String,String,String,String,String,Connection
        [javac]   found: String,String,String,String,String,String,int,int,Connection
        [javac]   reason: actual and formal argument lists differ in length
        [javac] 4 errors
    
    BUILD FAILED
    /var/lib/jenkins/workspace/ClassifyProcessor/build.xml:46: Compile failed; see the compiler error output for details.
    
    Total time: 2 seconds
    Build step 'Invoke Ant' marked build as failure
    Sending e-mails to: ktanzer@<mycompany>.com
    Finished: FAILURE