diff --git a/examples/nbody/.classpath b/examples/nbody/.classpath
index a9d6505892faf0e88efd0a9b2deee32074f4268d..b7fff1d8aee547de9ae86e84371e77303f408adc 100644
--- a/examples/nbody/.classpath
+++ b/examples/nbody/.classpath
@@ -1,18 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
-	<classpathentry kind="lib" path="/com.amd.aparapi/dist/aparapi.jar" sourcepath="/com.amd.aparapi">
-		<attributes>
-			<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="com.amd.aparapi.jni/dist"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="lib" path="/third-party/jogamp/gluegen-rt.jar">
-		<attributes>
-			<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="third-party/jogamp"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="lib" path="/third-party/jogamp/jogl-all.jar"/>
-	<classpathentry kind="output" path="classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+	<classpathentry kind="lib" path="/com.amd.aparapi/dist/aparapi.jar" sourcepath="/com.amd.aparapi">
+		<attributes>
+			<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="com.amd.aparapi.jni/dist"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="lib" path=".libs/gluegen-rt.jar"/>
+	<classpathentry kind="lib" path=".libs/jogl-all.jar"/>
+	<classpathentry kind="output" path="classes"/>
+</classpath>
diff --git a/examples/nbody/.gitignore b/examples/nbody/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..995897440568f8eb3da5dc0424ec57a0aab1f8da
--- /dev/null
+++ b/examples/nbody/.gitignore
@@ -0,0 +1,2 @@
+/.libs/
+/classes/
diff --git a/examples/nbody/build.xml b/examples/nbody/build.xml
index c98e61af092c92cd9483a339625cb514656354d7..156e850e1a0331ae0e6e6d9771eb6c5201a0e947 100644
--- a/examples/nbody/build.xml
+++ b/examples/nbody/build.xml
@@ -2,13 +2,33 @@
 
 <project name="nbody" default="build" basedir=".">
 
-	<!--<property name="jogamp-jar-url" value="http://jogamp.org/deployment/archive/rc/gluegen_28-joal_17-jogl_41-jocl_25/jar"/>-->
-	<property name="jogamp-jar-url" value="http://jogamp.org/deployment/archive/rc/gluegen_52-joal_32-jogl_66-jocl_41/jar" />
+	<!-- Ideally this would be the latest version of Java but not everyone is going to have it installed -->
+	<!-- Additionally we want to avoid "Class not found: javac1.8" errors from old Ant versions (i.e. Eclipse) -->
+	<property name="build.compiler" value="javac1.7" />
+	<property name="ant.build.javac.source" value="1.7" />
+	<property name="ant.build.javac.target" value="1.7" />
 
+	<property name="libs.root" value="${basedir}/.libs" />
+
+	<property name="jogl.all.jar" value="jogl-all.jar" />
+	<property name="jogl.all.natives.macosx.jar" value="jogl-all-natives-macosx-universal.jar" />
+	<property name="gluegen.rt.jar" value="gluegen-rt.jar" />
+	<property name="gluegen.rt.natives.macosx.jar" value="gluegen-rt-natives-macosx-universal.jar" />
+	
+	<property name="jogamp.url" value="http://jogamp.org/deployment/archive/rc/gluegen_52-joal_32-jogl_66-jocl_41/jar" />
+	
+	<property name="jogl.all.url" value="${jogamp.url}/${jogl.all.jar}" />
+	<property name="jogl.all.natives.macosx.url" value="${jogamp.url}/${jogl.all.natives.macosx.jar}" />	
+	<property name="gluegen.rt.url" value="${jogamp.url}/${gluegen.rt.jar}" />
+	<property name="gluegen.rt.natives.macosx.url" value="${jogamp.url}/${gluegen.rt.natives.macosx.jar}" />
+	
 	<path id="compiler.class.path">
 		<pathelement path="../../com.amd.aparapi/dist/aparapi.jar" />
-		<pathelement path="../third-party/jogamp/jogl-all.jar" />
-		<pathelement path="../third-party/jogamp/gluegen-rt.jar" />
+		<pathelement path="${libs.root}/${jogl.all.jar}" />
+		<pathelement path="${libs.root}/${jogl.all.natives.macosx.jar}" />
+		<pathelement path="${libs.root}/${gluegen.rt.jar}" />
+		<pathelement path="${libs.root}/${gluegen.rt.natives.macosx.jar}" />
+		<pathelement path="classes" />
 	</path>
 
 	<path id="runtime.class.path" cache="true">
@@ -16,6 +36,19 @@
 		<pathelement path="${ant.project.name}.jar" />
 	</path>
 
+	<target name="install.deps">
+		<mkdir dir="${libs.root}" />
+		<!-- Cleanup all existing deps -->
+		<delete failonerror="false" includeEmptyDirs="true">
+			<fileset dir="${libs.root}" includes="*/" />
+		</delete>
+		<!-- Download and unzip requested deps -->
+		<get src="${jogl.all.url}" dest="${libs.root}/${jogl.all.jar}" />
+		<get src="${jogl.all.natives.macosx.url}" dest="${libs.root}/${jogl.all.natives.macosx.jar}" />
+		<get src="${gluegen.rt.url}" dest="${libs.root}/${gluegen.rt.jar}" />
+		<get src="${gluegen.rt.natives.macosx.url}" dest="${libs.root}/${gluegen.rt.natives.macosx.jar}" />
+	</target>
+
 	<target name="build" depends="clean">
 		<mkdir dir="classes" />
 		<javac srcdir="src" destdir="classes" debug="on" includeantruntime="false">
@@ -54,5 +87,4 @@
 
 	<target name="run" depends="run-gpu" />
 
-
 </project>