No puedo entender por qué estoy obteniendo esta excepción de mi archivo ant build.xml. Revisé y todo está en el classpath. ¿Por qué debe ser esto tan complicado?otra java.lang.ClassNotFoundException en la tarea junit de la hormiga
Tuve problemas con Ant en el pasado y parece que siempre es algo relacionado con el classpath. Estoy señalando junit.jar usando ambas formas: dentro de eclipse: window-> preferences-> ant-> runtime-> Ant Home-> Add External Jars, y también dentro del script build.xml. Esta vez, Ant no puede ubicar mi clase de prueba en la tarea junit. ¿Hay algún problema con la forma en que estoy apuntando a esta clase?
<target name="init">
<property name="sourceDir" value="src"/>
<property name="outputDir" value="build" />
<property name="junitLocation" value="C:\...\org.junit4_4.3.1\junit.jar" />
</target>
<target name="clean" depends="init">
<delete dir="${outputDir}" />
</target>
<target name="prepare" depends="clean">
<mkdir dir="${outputDir}" />
</target>
<target name="compile" depends="prepare">
<javac srcdir="${sourceDir}" destdir="${outputDir}" classpath="${junitLocation}"/>
</target>
<path id="classpath">
<pathelement location="${outputDir}" />
<pathelement location="${junitLocation}" />
</path>
<target name="testApplication" depends="compile">
<echo>Running the junit tests...</echo>
<junit fork="yes" haltonfailure="yes">
<test name="my.package.MyTest" />
<formatter type="plain" usefile="false" />
<classpath refid="classpath" />
</junit>
</target>
siempre estoy recibiendo:
[junit] Testsuite: my.package.MyTest
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
[junit] Caused an ERROR
[junit] my.package.MyTest
[junit] java.lang.ClassNotFoundException: my.package.MyTest
[junit] at java.net.URLClassLoader$1.run(Unknown Source)
[junit] at java.security.AccessController.doPrivileged(Native Method)
[junit] at java.net.URLClassLoader.findClass(Unknown Source)
[junit] at java.lang.ClassLoader.loadClass(Unknown Source)
[junit] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
[junit] at java.lang.ClassLoader.loadClass(Unknown Source)
[junit] at java.lang.ClassLoader.loadClassInternal(Unknown Source)
[junit] at java.lang.Class.forName0(Native Method)
[junit] at java.lang.Class.forName(Unknown Source)
BUILD FAILED
Al parecer, hormiga encuentra junit.jar y los intentos de iniciar la prueba, pero por qué no puede encontrar mi clase de prueba? Señalo la carpeta con clase de prueba compilada. Así que sé que Junit está en el camino de clases de Ant al menos, pero el ClassNotFound me desconcierta.
¿Alguna idea quizás? ¡Muchas gracias!
Solo marcando: ¿ves ./build/my/package/MyTest.class? ¿Estás seguro de que se construye correctamente? – duffymo
sí, puedo ver la clase compilada, en el directorio correcto, no hay problema allí – denchr