You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2005/02/15 15:21:50 UTC

DO NOT REPLY [Bug 33585] New: - ClassNotFoundException For

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=33585>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=33585

           Summary: ClassNotFoundException For <junit>
           Product: Ant
           Version: 1.6.1
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Optional Tasks
        AssignedTo: dev@ant.apache.org
        ReportedBy: duffymo@yahoo.com


I'm running Ant 1.6.1 on Windows XP under Sun's 1.4.2 JDK.  

I've written a build.xml that automatically runs JUnit tests and generates XML 
reports using the JUnitReport task.  It's been successful for me in the past 
with Ant 1.5.

Now when I run it under Ant 1.6 I get a ClassNotFoundException for my TestCase.

I know that means CLASSPATH problems.  I've set build.sysclasspath=ignore in my 
properties file and set the CLASSPATH inside the build.xml.  When I click on 
Properties in the XML report I can see the class that can't be found in 
java.class.path, so I believe it's set correctly.

I can't for the life of me figure out why the class loader can't find the 
TestCases.  

Here are the properties I've used:

# Project specific items that change each time
project=oe-rtf
major=1
minor=0
version=${major}.${minor}
jar.name=${project}
versiondate=${TODAY}

# Tells Ant to ignore the system CLASSPATH and use only the
# internally-set CLASSPATH.  Depend on the build.xml author
# to get the CLASSPATH right.
build.sysclasspath=ignore



# Everything under source should come out of a repository
source=source
source.java=${source}/java
source.lib=${source}/lib
source.bin=${source}/bin
source.xml=${source}/rtf
source.xml=${source}/xml
source.xsl=${source}/xsl




# These are created and deleted by Ant each time
build=build
build.classes=${build}/classes
build.manifest=${build}/manifest
build.lib=${build}/lib
build.javadocs=${build}/javadocs
build.reports=${build}/reports

deploy=deploy
 
Here is the complete build.xml:

<project name="Standard Ant Build XML" default="javadocs" basedir=".">




    <target name="init-props" description="initialize properties">

        <tstamp>
            <format property="touch.time" pattern="MM/dd/yyyy hh:mm aa"/>
        </tstamp>
        
        <filterset id="ant.filters">
            <filter token="DATE" value="${TODAY}"/>
            <filter token="TIME" value="${TSTAMP}"/>
        </filterset>

        <!-- Load in all the settings in the properties file -->
        <property file="build.properties"/>

    </target>




    <target name="prepare" depends="init-props" description="create all the 
necessary directories">
        <mkdir dir="${build}"/>
        <mkdir dir="${build.javadocs}"/>
        <mkdir dir="${build.classes}"/>
        <mkdir dir="${build.manifest}"/>
        <mkdir dir="${build.reports}"/>
        <mkdir dir="${deploy}"/>
    </target>




    <target name="clean" depends="init-props" description="clean up the output 
directories">
        <delete dir="${build.javadocs}"/>
        <delete dir="${build.javadocs}"/>
        <delete dir="${build.classes}"/>
        <delete dir="${build.manifest}"/>
        <delete dir="${build.reports}"/>
        <delete dir="${deploy}"/>
    </target>




    <!-- Set the project class path for all targets -->
    <target name="set-classpath" depends="prepare" description="set the project 
classpath">

        <path id="project.class.path">
            <fileset dir="${source.lib}">
                <patternset>
                    <include name="**/*.jar"/>
                </patternset>
            </fileset>

            <fileset dir="${build.classes}">
                <patternset>
                    <include name="**/*.class"/>
                </patternset>
            </fileset>
        </path>

    </target>




    <target name="echo-classpath" depends="set-classpath" description="echo the 
classpath">
        <pathconvert dirsep=";" pathsep="/" property="converted.class.path">
            <path refid="project.class.path"/>
        </pathconvert>
        <echo message="${converted.class.path}"/>
    </target>




    <target name="compile" depends="set-classpath" description="compile all 
java">
        <javac srcdir="${source.java}"
               destdir="${build.classes}"
               deprecation="on"
               debug="on">
            <classpath refid="project.class.path"/>
            <include name="**/*.java"/>
        </javac>
    </target>




    <target name="test" depends="compile" description="run all unit tests">
        <pathconvert dirsep="/" pathsep=";" property="converted.class.path">
            <path refid="project.class.path"/>
        </pathconvert>
        <echo message="${converted.class.path}"/>
        <junit>
            <classpath refid="project.class.path"/>
            <formatter type="xml"/>
            <batchtest fork="yes" todir="${build.reports}">
                <fileset dir="${build.classes}">
                    <include name="**/*TestCase.class"/>
                </fileset>
            </batchtest>
        </junit>
    </target>




    <target name="report" depends="test" description="create HTML report for 
JUnit test results">
        <junitreport todir="${build.reports}">
            <fileset dir="${build.reports}">
                <include name="TEST-*.xml"/>
            </fileset>
            <report format="frames" todir="${build.reports}"/>
        </junitreport>
    </target>



    <target name="deploy" depends="report" description="deploy the application">

        <buildnumber/>

        <manifest file="${build.manifest}/manifest.mf">
            <attribute name="Implementation-Title"      value="${project}"/>
            <attribute name="Built-By"                  value="${user.name}"/>
            <attribute name="Build-Date"                value="${TODAY}"/>
            <attribute name="Major-Version"             value="${major}"/>
            <attribute name="Minor-Version"             value="${minor}"/>
            <attribute name="Build-Number"              
value="${build.number}"/>
        </manifest>

        <jar jarfile="${deploy}/${project}.jar" 
             manifest="${build.manifest}/manifest.mf">
            <fileset dir="${build.classes}" excludes="**/*TestCase*.class, 
**/*TestSuite*.class"/>
        </jar>

        <jar jarfile="${deploy}/${project}-tests.jar"
             manifest="${build.manifest}/manifest.mf">
            <fileset dir="${build.classes}" includes="**/*TestCase*.class, 
**/*TestSuite*.class"/>
        </jar>

        <copy todir="${deploy}">
            <fileset dir="${source.lib}"/>
        </copy>

    </target>




    <target name="javadocs" depends="deploy" description="generate complete 
javadocs">
        <javadoc sourcepath="${source.java}"
                 destdir="${build.javadocs}"
                 overview="${source.java}/overview.html">
            <classpath refid="project.class.path"/>
            <packageset dir="${source.java}"/>
        </javadoc>
    </target>

</project>

I'll apologize in advance if it's a boneheaded thing on my part.  Thanks - %

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org