diff --git a/tests/JavaTest.sh b/tests/JavaTest.sh
index 344bd1c0b44435c7c9c4ca268e07ed5135788e15..bf37354b16b9b966571e88ed66e611209bef0ac9 100755
--- a/tests/JavaTest.sh
+++ b/tests/JavaTest.sh
@@ -19,11 +19,20 @@ echo Compile then run the Java test.
 testdir=$(readlink -fn `dirname $0`)
 thisdir=$(readlink -fn `pwd`)
 
+targetdir=${testdir}/target
+
 if [[ "$testdir" != "$thisdir" ]]; then
 	echo error: must be run from inside the ${testdir} directory
 	echo you ran it from ${thisdir}
 	exit 1
 fi
 
-javac -classpath ${testdir}/../java:${testdir}:${testdir}/namespace_test JavaTest.java
-java -classpath ${testdir}/../java:${testdir}:${testdir}/namespace_test JavaTest
+if [ -e "${targetdir}" ]; then
+    echo "clean target"
+    rm -fr ${targetdir}
+fi
+
+mkdir ${targetdir}
+
+javac -d ${targetdir} -classpath ${testdir}/../java:${testdir}:${testdir}/namespace_test JavaTest.java
+java -classpath ${targetdir} JavaTest