You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Dave <dw...@users.sourceforge.net> on 2001/03/10 05:49:24 UTC

Help with JUNit task

I know many others have asked this same question. I've looked at the
responses they've gotten, but I can't figure it out. I had junit tests
working with ant 1.2, but they aren't working with 1.3.

Yes, I'm getting the "Could not create task of type: junit. Common
solutions are to use taskdef to declare your task, or, if this is an
optional task, to put the optional.jar in the lib directory of your ant
installation (ANT_HOME)." problem.

I am out of ideas for where to put optional.jar and junit.jar. I've got
them everywhere! Can one of you please help me figure this out.

My ant command (after modifying the ant file in /usr/bin) is this:

java -classpath
/usr/share/java/ant.jar:/usr/share/java/jaxp.jar:/usr/share/java/optional.jar:/usr/share/java/parser.jar:/usr/local/java/junit/junit.jar:/usr/java/jdk1.3.1/lib/tools.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar
-Dant.home=/usr/share/ant org.apache.tools.ant.Main

/usr/share/ant/lib contains junit.jar and optional.jar , which I believe
matches the instructions in
file:/home/httpd/html/manual/ant/manual/install.html .

The task is:

        <target name="test-support" depends="support-test">

         <echo message="${test-class-path}:${java.class.path}" />
         <junit printsummary="yes" fork="yes" haltonfailure="yes"
dir="${src}/support/javahelp/property/test">
          <jvmarg value="-Djava.compiler=NONE"/>
          <jvmarg
value="-Dlyophil.properties=${src}/support/javahelp/property/test/lyophil.properties"/>

          <formatter type="plain" usefile="no"/>
          <classpath>
           <pathelement path="${java.class.path}" />
           <pathelement path="${test-class-path}" />
          </classpath>
          <test name="javahelp.test.JavaHelpTests" />
         </junit>

        </target>

The classpath for that is:
/usr/local/java/junit/junit.jar:/usr/local/java/extensions/jdbc2.0ext/jdbc2_0-stdext.jar:/usr/local/java/idb/Classes/idb.jar:/usr/local/java/idb/Classes/idbexmpl.jar:/usr/local/java/extensions/jdbc2.0ext/jdbc2_0-stdext.jar:/usr/local/java/extensions/jta-spec1_0_1/jta-spec1_0_1.jar:/usr/local/java/jonas/lib/RMI_jonas.jar:/usr/local/java/jonas/lib/ejb.jar:/usr/local/java/extensions/jndi/lib/jndi.jar:/usr/local/java/extensions/jndi/lib/providerutil.jar:/usr/local/java/extensions/jndi/lib/rmiregistry.jar:production/dist/lib/tools.jar:production/dist/lib/support.jar:production/dist/lib/lyophil-core.jar:production/dist/lib/lyophil-mem.jar:production/dist/lib/lyophil-jdbc20.jar:production/dist/lib/lyophil-instantdb-3-26.jar:production/dist/lib/lyophil-ejb11.jar:production/dist/lib/support-test.jar:production/dist/lib/lyophil-core-test.jar:production/dist/lib/lyophil-mem-test.jar:production/dist/lib/lyophil-jdbc20-test.jar:production/dist/lib/lyophil-ejb11-jonas.jar:production/dist/lib/lyophil-ejb11-test.jar:production/dist/lib/lyophil-ejb11-jonas-test.jar:/usr/local/java/junit/junit.jar:/usr/share/ant/lib/optional.jar:/usr/share/java/ant.jar:/usr/share/java/jaxp.jar:/usr/share/java/optional.jar:/usr/share/java/parser.jar:/usr/local/java/junit/junit.jar:/usr/java/jdk1.3.1/lib/tools.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar

junit.jar is in this path three times, and optional.jar is in it twice.
And it doesn't work.

What's set wrong?

Thanks,

Dave


Re: Help with JUNit task

Posted by Dave <dw...@users.sourceforge.net>.
OK. I figured this out myself, but I'll post the solution for posterity.

If you get "Could not create task of type: junit. Common
solutions are to use taskdef to declare your task, or, if this is an
optional task, to put the optional.jar in the lib directory of your ant
installation (ANT_HOME).", you might need the

jakarta-ant-1.3-optional.jar, which is available at
http://jakarta.apache.org/builds/ant/release/v1.3/bin/
. You might miss it if you download the rpms.

Next, pop open /usr/bin/ant, and add jakarta-ant-1.3-optional.jar and
junit.jar to the LOCALCLASSPATH

The optional.jar from the rpm does not have the classes you need in it.

Hope that saves someone else some work in the future.

Dave



Re: Help with JUNit task

Posted by Dave <dw...@users.sourceforge.net>.
My optional.jar (from the rpm) does not contain the classes for

AggregateTransformer.java  JUnitTestRunner.java
BaseTest.java              PlainJUnitResultFormatter.java
BatchTest.java             SummaryJUnitResultFormatter.java
DOMUtil.java               XMLConstants.java
Enumerations.java          XMLJUnitResultFormatter.java
FormatterElement.java      XMLResultAggregator.java
JUnitResultFormatter.java
JUnitTask.java
JUnitTest.java


Is that the problem?

Thanks,

Dave



Re: Help with JUNit task

Posted by Dave <dw...@users.sourceforge.net>.
Here is a bit more isolated case. Same error.

Interestingly, native2ascii is in the User task list, but junit is not. Is that the problem?

Thanks,

Dave


[dwalend@sneakyvine test]$ $ANT_HOME
bash: /usr/share/ant: is a directory
[dwalend@sneakyvine test]$ ls $ANT_HOME
bin  lib
[dwalend@sneakyvine test]$ ls /usr/share/ant/lib/
junit.jar  optional.jar

The whole build.xml file:

<project name="junit-test" default="test-dist" basedir=".">

 <!-- set global properties for this build -->

 <!-- where all the source code lives. Basically everything in the cvs repository except build.xml -->
 <property name="src" value="source" />

 <!-- where all dependant generated code lives -->
 <property name="production" value="production" />

 <!-- where compiled code gets assembled -->
 <property name="build" value="${production}/build" />

 <!-- where jarfiles and tarballs get sorted into directories -->
 <property name="dist"  value="${production}/dist" />

<!-- where the .jar files go -->
 <property name="lib" value="${dist}/lib"/>

<!-- Classpaths -->

<!-- test class paths -->

 <property name="test-jar" value="${lib}/test.jar" />

 <property name="junit-jar" value="/usr/local/java/junit/junit.jar"/>

 <property name="optional-jar" value="/usr/share/java/optional.jar" />

<!-- clean up the build mess -->
 <target name="clean">
  <delete dir="${production}" />
 </target>


<!-- prepare the build tree to build anything -->
 <target name="prepare" depends="clean">
  <!-- Create the time stamp -->
  <tstamp/>
  <!-- Create the build directory structure used by compile -->
  <mkdir dir="${production}" />

  <mkdir dir="${build}" />
  <mkdir dir="${dist}" />
  <mkdir dir="${lib}" />

 </target>

<!-- build test.jar -->
 <target name="test-jar" depends="prepare">
  <mkdir dir="${build}/test" />
  <javac srcdir="${src}" includes="**" destdir="${build}/test" >
   <classpath>
    <pathelement path="${test-jar}" />
    <pathelement path="${junit-jar}" />
   </classpath>
  </javac>
  <jar jarfile="${lib}/test.jar" basedir="${build}/test" />
 </target>

<!-- test test.jar -->
 <target name="test" depends="test-jar">
  <echo message="${java.class.path}:${test-jar}:${junit-jar}" />

  <junit printsummary="yes" haltonfailure="yes" fork="yes" >
   <jvmarg value="-Djava.compiler=NONE"/>
    <formatter type="plain" usefile="no"/>
    <classpath>
     <pathelement path="${java.class.path}" />
     <pathelement path="${test-jar}" />
     <pathelement path="${junit-jar}" />
    </classpath>
   <test name="JUnitTest" />
  </junit>
 </target>

</project>
 ---------------------

output from ant -emacs -debug test:
cd ~/test/
ant -emacs -debug test
Ant version 1.3 compiled on March 5 2001

Buildfile: build.xml
Setting project property: ant.java.version -> 1.3
Detected Java Version: 1.3
Detected OS: Linux
 +User task: tar     org.apache.tools.ant.taskdefs.Tar
 +User task: fail     org.apache.tools.ant.taskdefs.Exit
 +User task: uptodate     org.apache.tools.ant.taskdefs.UpToDate
 +User task: java     org.apache.tools.ant.taskdefs.Java
 +User task: execon     org.apache.tools.ant.taskdefs.ExecuteOn
 +User task: echo     org.apache.tools.ant.taskdefs.Echo
 +User task: native2ascii     org.apache.tools.ant.taskdefs.optional.Native2Ascii
 +User task: jjtree     org.apache.tools.ant.taskdefs.optional.javacc.JJTree
 +User task: compileTask     org.apache.tools.ant.taskdefs.CompileTask
 +User task: chmod     org.apache.tools.ant.taskdefs.Chmod
 +User task: javadoc2     org.apache.tools.ant.taskdefs.Javadoc
 +User task: deltree     org.apache.tools.ant.taskdefs.Deltree
 +User task: cvs     org.apache.tools.ant.taskdefs.Cvs
 +User task: jlink     org.apache.tools.ant.taskdefs.optional.jlink.JlinkTask
 +User task: tstamp     org.apache.tools.ant.taskdefs.Tstamp
 +User task: unjar     org.apache.tools.ant.taskdefs.Expand
 +User task: patch     org.apache.tools.ant.taskdefs.Patch
 +User task: sound     org.apache.tools.ant.taskdefs.optional.sound.SoundTask
 +User task: cccheckout     org.apache.tools.ant.taskdefs.optional.clearcase.CCCheckout
 +User task: mail     org.apache.tools.ant.taskdefs.SendEmail
 +User task: gzip     org.apache.tools.ant.taskdefs.GZip
 +User task: copy     org.apache.tools.ant.taskdefs.Copy
 +User task: filter     org.apache.tools.ant.taskdefs.Filter
 +User task: jar     org.apache.tools.ant.taskdefs.Jar
 +User task: unzip     org.apache.tools.ant.taskdefs.Expand
 +User task: rename     org.apache.tools.ant.taskdefs.Rename
 +User task: propertyfile     org.apache.tools.ant.taskdefs.optional.PropertyFile
 +User task: copyfile     org.apache.tools.ant.taskdefs.Copyfile
 +User task: gunzip     org.apache.tools.ant.taskdefs.GUnzip
 +User task: antcall     org.apache.tools.ant.taskdefs.CallTarget
 +User task: taskdef     org.apache.tools.ant.taskdefs.Taskdef
 +User task: mkdir     org.apache.tools.ant.taskdefs.Mkdir
 +User task: sql     org.apache.tools.ant.taskdefs.SQLExec
 +User task: replace     org.apache.tools.ant.taskdefs.Replace
 +User task: ant     org.apache.tools.ant.taskdefs.Ant
 +User task: style     org.apache.tools.ant.taskdefs.XSLTProcess
 +User task: fixcrlf     org.apache.tools.ant.taskdefs.FixCRLF
 +User task: vssget     org.apache.tools.ant.taskdefs.optional.vss.MSVSSGET
 +User task: genkey     org.apache.tools.ant.taskdefs.GenerateKey
 +User task: zip     org.apache.tools.ant.taskdefs.Zip
 +User task: antstructure     org.apache.tools.ant.taskdefs.AntStructure
 +User task: javah     org.apache.tools.ant.taskdefs.optional.Javah
 +User task: javac     org.apache.tools.ant.taskdefs.Javac
 +User task: test     org.apache.tools.ant.taskdefs.optional.Test
 +User task: cab     org.apache.tools.ant.taskdefs.optional.Cab
 +User task: mparse     org.apache.tools.ant.taskdefs.optional.metamata.MParse
 +User task: ccuncheckout     org.apache.tools.ant.taskdefs.optional.clearcase.CCUnCheckout
 +User task: ejbjar     org.apache.tools.ant.taskdefs.optional.ejb.EjbJar
 +User task: available     org.apache.tools.ant.taskdefs.Available
 +User task: vsslabel     org.apache.tools.ant.taskdefs.optional.vss.MSVSSLABEL
 +User task: wljspc     org.apache.tools.ant.taskdefs.optional.jsp.WLJspc
 +User task: move     org.apache.tools.ant.taskdefs.Move
 +User task: csc     org.apache.tools.ant.taskdefs.optional.dotnet.CSharp
 +User task: signjar     org.apache.tools.ant.taskdefs.SignJar
 +User task: javacc     org.apache.tools.ant.taskdefs.optional.javacc.JavaCC
 +User task: cccheckin     org.apache.tools.ant.taskdefs.optional.clearcase.CCCheckin
 +User task: property     org.apache.tools.ant.taskdefs.Property
 +User task: unwar     org.apache.tools.ant.taskdefs.Expand
 +User task: touch     org.apache.tools.ant.taskdefs.Touch
 +User task: ilasm     org.apache.tools.ant.taskdefs.optional.dotnet.Ilasm
 +User task: get     org.apache.tools.ant.taskdefs.Get
 +User task: javadoc     org.apache.tools.ant.taskdefs.Javadoc
 +User task: untar     org.apache.tools.ant.taskdefs.Untar
 +User task: delete     org.apache.tools.ant.taskdefs.Delete
 +User task: copydir     org.apache.tools.ant.taskdefs.Copydir
 +User task: war     org.apache.tools.ant.taskdefs.War
 +User task: ccupdate     org.apache.tools.ant.taskdefs.optional.clearcase.CCUpdate
 +User task: depend     org.apache.tools.ant.taskdefs.optional.depend.Depend
 +User task: renameext     org.apache.tools.ant.taskdefs.optional.RenameExtensions
 +User task: exec     org.apache.tools.ant.taskdefs.ExecTask
 +User task: apply     org.apache.tools.ant.taskdefs.Transform
 +User task: rmic     org.apache.tools.ant.taskdefs.Rmic
 +User datatype: fileset     org.apache.tools.ant.types.FileSet
 +User datatype: patternset     org.apache.tools.ant.types.PatternSet
 +User datatype: path     org.apache.tools.ant.types.Path
 +User datatype: mapper     org.apache.tools.ant.types.Mapper
Setting project property: java.runtime.name -> Java(TM) 2 Runtime Environment, Standard Edition
Setting project property: sun.boot.library.path -> /usr/java/jdk1.3.1/jre/lib/i386
Setting project property: java.vm.version -> 1.3.1beta-b15
Setting project property: java.vm.vendor -> Sun Microsystems Inc.
Setting project property: java.vendor.url -> http://java.sun.com/
Setting project property: path.separator -> :
Setting project property: java.vm.name -> Java HotSpot(TM) Client VM
Setting project property: file.encoding.pkg -> sun.io
Setting project property: java.vm.specification.name -> Java Virtual Machine Specification
Setting project property: user.dir -> /home/dwalend/test
Setting project property: java.runtime.version -> 1.3.1-beta-b15
Setting project property: java.awt.graphicsenv -> sun.awt.X11GraphicsEnvironment
Setting project property: os.arch -> i386
Setting project property: java.io.tmpdir -> /tmp
Setting project property: line.separator ->

Setting project property: java.vm.specification.vendor -> Sun Microsystems Inc.
Setting project property: java.awt.fonts ->
Setting project property: os.name -> Linux
Setting project property: ant.home -> /usr/share/ant
Setting project property: java.library.path -> /usr/java/jdk1.3.1/jre/lib/i386:/usr/java/jdk1.3.1/jre/lib/i386/native_threads/:/usr/java/jdk1.3.1/jre/lib/i386/client:/usr/java/jdk1.3.1/jre/../lib/i386:/usr/local/lib:/usr/local/glut/lib/glut:/usr/local/mesa/lib:/home/dwalend/weblogic-510/lib/linux
Setting project property: java.specification.name -> Java Platform API Specification
Setting project property: java.class.version -> 47.0
Setting project property: os.version -> 2.2.12-20
Setting project property: user.home -> /home/dwalend
Setting project property: user.timezone ->
Setting project property: java.awt.printerjob -> sun.awt.motif.PSPrinterJob
Setting project property: file.encoding -> ISO-8859-1
Setting project property: java.specification.version -> 1.3
Setting project property: java.class.path -> /usr/local/java/junit/junit.jar:/usr/share/ant/lib/optional.jar:/usr/share/java/ant.jar:/usr/share/java/jaxp.jar:/usr/share/java/parser.jar:/usr/java/jdk1.3.1/lib/tools.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar
Setting project property: user.name -> dwalend
Setting project property: java.vm.specification.version -> 1.0
Setting project property: java.home -> /usr/java/jdk1.3.1/jre
Setting project property: user.language -> en
Setting project property: java.specification.vendor -> Sun Microsystems Inc.
Setting project property: java.vm.info -> mixed mode
Setting project property: java.version -> 1.3.1-beta
Setting project property: java.ext.dirs -> /usr/java/jdk1.3.1/jre/lib/ext
Setting project property: sun.boot.class.path -> /usr/java/jdk1.3.1/jre/lib/rt.jar:/usr/java/jdk1.3.1/jre/lib/i18n.jar:/usr/java/jdk1.3.1/jre/lib/sunrsasign.jar:/usr/java/jdk1.3.1/jre/classes
Setting project property: java.vendor -> Sun Microsystems Inc.
Setting project property: file.separator -> /
Setting project property: java.vendor.url.bug -> http://java.sun.com/cgi-bin/bugreport.cgi
Setting project property: sun.io.unicode.encoding -> UnicodeLittle
Setting project property: sun.cpu.endian -> little
Setting project property: user.region -> US
Setting project property: sun.cpu.isalist ->
Setting ro project property: ant.file -> /home/dwalend/test/build.xml
parsing buildfile /home/dwalend/test/build.xml with URI = file:/home/dwalend/test/build.xml
Setting ro project property: ant.project.name -> junit-test
Setting project property: basedir -> /home/dwalend/test
Project base dir set to: /home/dwalend/test
   +Task: property
Setting project property: src -> source
   +Task: property
Setting project property: production -> production
   +Task: property
Setting project property: build -> production/build
   +Task: property
Setting project property: dist -> production/dist
   +Task: property
Setting project property: lib -> production/dist/lib
   +Task: property
Setting project property: test-jar -> production/dist/lib/test.jar
   +Task: property
Setting project property: junit-jar -> /usr/local/java/junit/junit.jar
   +Task: property
Setting project property: optional-jar -> /usr/share/java/optional.jar
 +Target: clean
   +Task: delete
 +Target: prepare
   +Task: tstamp
   +Task: mkdir
   +Task: mkdir
   +Task: mkdir
   +Task: mkdir
 +Target: test-jar
   +Task: mkdir
   +Task: javac
   +Task: jar
 +Target: test
   +Task: echo
Build sequence for target `test' is [clean, prepare, test-jar, test]
Complete build sequence is [clean, prepare, test-jar, test]

clean:
Deleting directory /home/dwalend/test/production
Deleting /home/dwalend/test/production/build/test/JUnitTest.class
Deleting /home/dwalend/test/production/build/test/JUnitVictem.class
Deleting directory /home/dwalend/test/production/build/test
Deleting directory /home/dwalend/test/production/build
Deleting /home/dwalend/test/production/dist/lib/test.jar
Deleting directory /home/dwalend/test/production/dist/lib
Deleting directory /home/dwalend/test/production/dist
Deleting directory /home/dwalend/test/production

prepare:
Setting project property: DSTAMP -> 20010310
Setting project property: TSTAMP -> 0953
Setting project property: TODAY -> March 10 2001
Created dir: /home/dwalend/test/production
Created dir: /home/dwalend/test/production/build
Created dir: /home/dwalend/test/production/dist
Created dir: /home/dwalend/test/production/dist/lib

test-jar:
Created dir: /home/dwalend/test/production/build/test
JUnitTest.java added as /home/dwalend/test/production/build/test/JUnitTest.class doesn't exist.
JUnitVictem.java added as /home/dwalend/test/production/build/test/JUnitVictem.class doesn't exist.
Compiling 2 source files to /home/dwalend/test/production/build/test
Using modern compiler
Compilation args: -d /home/dwalend/test/production/build/test -classpath /home/dwalend/test/production/build/test:/usr/local/java/junit3.5/junit.jar:/usr/share/java/optional.jar:/usr/share/java/ant.jar:/usr/share/java/jaxp.jar:/usr/share/java/parser.jar:/usr/java/jdk1.3.1/lib/tools.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar -sourcepath /home/dwalend/test/source
Files to be compiled:
    /home/dwalend/test/source/JUnitTest.java
    /home/dwalend/test/source/JUnitVictem.java

Building jar: /home/dwalend/test/production/dist/lib/test.jar

test:
/usr/local/java/junit/junit.jar:/usr/share/ant/lib/optional.jar:/usr/share/java/ant.jar:/usr/share/java/jaxp.jar:/usr/share/java/parser.jar:/usr/java/jdk1.3.1/lib/tools.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar:/usr/java/jdk1.3.1/jre/lib/rt.jar:production/dist/lib/test.jar:/usr/local/java/junit/junit.jar
Could not create task of type: junit Common solutions are adding the task to defaults.properties and executing bin/bootstrap

BUILD FAILED

/home/dwalend/test/build.xml:65: Could not create task of type: junit. Common solutions are to use taskdef to declare your task, or, if this is an optional task, to put the optional.jar in the lib directory of your ant installation (ANT_HOME).

Total time: 6 seconds

Compilation exited abnormally with code 1 at Sat Mar 10 09:53:56