diff --git a/build.xml b/build.xml
index d80e1877db8a7b6e0a06c6d105b974bf4d38ce63..404c72245a3535f5412630cd949def25a941154e 100644
--- a/build.xml
+++ b/build.xml
@@ -258,6 +258,11 @@
         <copy file="apps/routerconsole/java/build/routerconsole.war" todir="build/" />
     </target>
 
+    <target name="buildTools" depends="buildrouter" >
+        <ant dir="installer/tools/java" target="jar" />
+        <copy file="installer/tools/java/build/tools.jar" todir="build/" />
+    </target>
+
     <!-- end of sub-build.xml targets -->
 
     <target name="checkForMtn" >
@@ -1058,12 +1063,13 @@
         <isfalse value="${bundle.routerInfos}" />
     </condition>
 
-    <target name="prepRouterInfos" depends="buildrouter" unless="no.bundle.routerInfos">
+    <target name="prepRouterInfos" depends="buildrouter, buildTools" unless="no.bundle.routerInfos">
         <mkdir dir="pkg-temp/netDb" />
         <java classname="net.i2p.router.networkdb.kademlia.BundleRouterInfos" fork="true" failonerror="true">
             <classpath>
                 <pathelement location="build/i2p.jar" />
                 <pathelement location="build/router.jar" />
+                <pathelement location="build/tools.jar" />
             </classpath>
             <arg value="-i" />
             <arg value="${bundle.routerInfos.i2pConfigDir}" />
diff --git a/installer/tools/java/build.xml b/installer/tools/java/build.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ddb00137b51a0a8be92f3f44180ff74ff06323a5
--- /dev/null
+++ b/installer/tools/java/build.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project basedir="." default="all" name="tooljar">
+    <target name="all" depends="clean, build" />
+    <target name="build" depends="builddep, jar" />
+    <target name="builddep">
+        <!-- noop, since the core doesnt depend on anything -->
+    </target>
+    <condition property="depend.available">
+        <typefound name="depend" />
+    </condition>
+    <target name="depend" if="depend.available">
+        <depend
+            cache="../../../build"
+            srcdir="./src"
+            destdir="./build/obj" >
+        </depend>
+    </target>
+
+    <!-- only used if not set by a higher build.xml -->
+    <property name="javac.compilerargs" value="" />
+    <property name="javac.classpath" value="" />
+    <property name="javac.version" value="1.6" />
+
+    <target name="compile" depends="depend">
+        <mkdir dir="./build" />
+        <mkdir dir="./build/obj" />
+        <javac srcdir="./src" debug="true" source="${javac.version}" target="${javac.version}" deprecation="on"
+            includeAntRuntime="false"
+            destdir="./build/obj" classpath="${javac.classpath}:../../../build/i2p.jar:../../../build/router.jar" >
+            <compilerarg line="${javac.compilerargs}" />
+        </javac>
+    </target>
+
+    <target name="jar" depends="compile">
+        <jar destfile="build/tools.jar">
+            <fileset dir="./build/obj" includes="**" />
+            <manifest>
+                <attribute name="Built-By" value="${build.built-by}" />
+                <attribute name="Build-Date" value="${build.timestamp}" />
+                <attribute name="Base-Revision" value="${workspace.version}" />
+            </manifest>
+        </jar>
+    </target>
+
+    <target name="clean">
+        <delete dir="./build" />
+    </target>
+    <target name="cleandep" depends="clean">
+        <!-- noop, since the core doesn't depend on anything -->
+    </target>
+    <target name="distclean" depends="clean">
+        <!-- noop, since the core doesn't depend on anything -->
+    </target>
+</project>
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/BundleRouterInfos.java b/installer/tools/java/src/net/i2p/router/networkdb/kademlia/BundleRouterInfos.java
similarity index 100%
rename from router/java/src/net/i2p/router/networkdb/kademlia/BundleRouterInfos.java
rename to installer/tools/java/src/net/i2p/router/networkdb/kademlia/BundleRouterInfos.java