diff --git a/ant-build.xml b/ant-build.xml
new file mode 100644
index 0000000000000000000000000000000000000000..02dd232696f6b3381e2bfd7005af31f717751187
--- /dev/null
+++ b/ant-build.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<project name="unimelb-mf-clients">
+    <property name="jreMacFile" value="OpenJDK17U-jre_x64_mac_hotspot_17.0.4_8.tar.gz" />
+    <property name="jreMacUrl" value="https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jre_x64_mac_hotspot_17.0.4_8.tar.gz" />
+
+    <property name="jreWindowsFile" value="OpenJDK17U-jre_x64_windows_hotspot_17.0.4_8.zip" />
+    <property name="jreWindowsUrl" value="https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jre_x64_windows_hotspot_17.0.4_8.zip" />
+
+    <property name="jreLinuxFile" value="OpenJDK17U-jre_x64_linux_hotspot_17.0.4_8.tar.gz" />
+    <property name="jreLinuxUrl" value="https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.4%2B8/OpenJDK17U-jre_x64_linux_hotspot_17.0.4_8.tar.gz" />
+
+    <property name="jreDirName" value="jdk-17.0.4+8-jre" />
+    <property name="tempDir" value="${projectBuildDir}/temp" />
+    <property name="distDir" value="${projectBuildDir}/dist" />
+
+    <target name="init">
+        <mkdir dir="${tempDir}" />
+        <mkdir dir="${distDir}" />
+    	<mkdir dir="${projectLibDir}"/>
+    	<copy file="${project.build.directory}/${projectArtifactId}-${projectVersion}-jar-with-dependencies.jar" toFile="${projectLibDir}/${projectArtifactId}.jar"/>
+    </target>
+    <target name="pkgMac" depends="init">
+        <echo message="downloading Java Runtime for Mac OS..." />
+        <get src="${jreMacUrl}" dest="${tempDir}" />
+        <untar src="${tempDir}/${jreMacFile}" dest="${tempDir}" compression="gzip" />
+        <delete file="${tempDir}/${jreMacFile}" />
+        <tar longfile="gnu" destfile="${distDir}/${projectArtifactId}-${projectVersion}-mac-x64.tar">
+            <tarfileset dir="${tempDir}/${jreDirName}/Contents/Home" includes="bin/**/*" prefix="${projectArtifactId}-${projectVersion}/jre" filemode="755" />
+            <tarfileset dir="${tempDir}/${jreDirName}/Contents/Home" excludes="bin/**/*" prefix="${projectArtifactId}-${projectVersion}/jre" filemode="644" />
+            <tarfileset dir="${projectLibDir}" prefix="${projectArtifactId}-${projectVersion}/lib" filemode="644" />
+            <tarfileset dir="${projectBaseDir}/src/main/scripts/unix" prefix="${projectArtifactId}-${projectVersion}/bin/unix" filemode="755" />
+        </tar>
+        <gzip destfile="${distDir}/${projectArtifactId}-${projectVersion}-mac-x64.tar.gz" src="${distDir}/${projectArtifactId}-${projectVersion}-mac-x64.tar" />
+        <delete file="${distDir}/${projectArtifactId}-${projectVersion}-mac-x64.tar" />
+        <delete dir="${tempDir}/${jreDirName}" />
+    </target>
+    <target name="pkgWindows" depends="init">
+        <echo message="downloading Java Runtime for Windows..." />
+        <get src="${jreWindowsUrl}" dest="${tempDir}" />
+        <unzip src="${tempDir}/${jreWindowsFile}" dest="${tempDir}" />
+        <delete file="${tempDir}/${jreWindowsFile}" />
+        <zip destfile="${distDir}/${projectArtifactId}-${projectVersion}-windows-x64.zip">
+            <zipfileset dir="${tempDir}/${jreDirName}" includes="bin/**/*" prefix="${projectArtifactId}-${projectVersion}/jre" filemode="755" />
+            <zipfileset dir="${tempDir}/${jreDirName}" excludes="bin/**/*" prefix="${projectArtifactId}-${projectVersion}/jre" filemode="644" />
+            <zipfileset dir="${projectLibDir}" prefix="${projectArtifactId}-${projectVersion}/lib" filemode="644" />
+            <zipfileset dir="${projectBaseDir}/src/main/scripts/windows" prefix="${projectArtifactId}-${projectVersion}/bin/windows" filemode="755" />
+        </zip>
+    	<delete dir="${tempDir}/${jreDirName}" />
+    </target>
+    <target name="pkgLinux" depends="init">
+        <echo message="downloading Java Runtime for Linux..." />
+        <get src="${jreLinuxUrl}" dest="${tempDir}" />
+        <untar src="${tempDir}/${jreLinuxFile}" dest="${tempDir}" compression="gzip" />
+        <delete file="${tempDir}/${jreLinuxFile}" />
+        <tar longfile="gnu" destfile="${distDir}/${projectArtifactId}-${projectVersion}-linux-x64.tar">
+            <tarfileset dir="${tempDir}/${jreDirName}" includes="bin/**/*" prefix="${projectArtifactId}-${projectVersion}/jre" filemode="755" />
+            <tarfileset dir="${tempDir}/${jreDirName}" excludes="bin/**/*" prefix="${projectArtifactId}-${projectVersion}/jre" filemode="644" />
+            <tarfileset dir="${projectLibDir}" prefix="${projectArtifactId}-${projectVersion}/lib" filemode="644" />
+            <tarfileset dir="${projectBaseDir}/src/main/scripts/unix" prefix="${projectArtifactId}-${projectVersion}/bin/unix" filemode="755" />
+        </tar>
+        <gzip destfile="${distDir}/${projectArtifactId}-${projectVersion}-linux-x64.tar.gz" src="${distDir}/${projectArtifactId}-${projectVersion}-linux-x64.tar" />
+        <delete file="${distDir}/${projectArtifactId}-${projectVersion}-linux-x64.tar" />
+    	<delete dir="${tempDir}/${jreDirName}" />
+    </target>
+    <target name="package" depends="pkgMac,pkgWindows,pkgLinux">
+    </target>
+</project>
\ No newline at end of file
diff --git a/build-all.sh b/build-all.sh
index 651305400b99e3c0aad4f94b7f445832027386c7..8151e115d16f65c044d78e8bc760a9e8f68ef70d 100755
--- a/build-all.sh
+++ b/build-all.sh
@@ -1 +1 @@
-mvn clean package -P platform-packages
+mvn clean package -X -P platform-packages
diff --git a/pom.xml b/pom.xml
index 43c9b4e1e26d23a27957177f52a1e52cfdb843fe..097e5eb739fa1adffad3f25a6267c8713f93a37a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,6 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 
 	<groupId>au.edu.unimelb.mf</groupId>
@@ -14,19 +16,6 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss z</maven.build.timestamp.format>
 		<skipTests>true</skipTests>
-		<!-- <mexplorer.version>1.3.27_001</mexplorer.version> -->
-		<jreMacFile>openjdk-15.0.2-jre-with-jfx_osx-x64.tar.gz</jreMacFile>
-		<jreMacUrl>
-			https://gitlab.unimelb.edu.au/resplat-mediaflux/java-downloads/raw/master/openjdk-15.0.2-jre-with-jfx_osx-x64.tar.gz
-		</jreMacUrl>
-		<jreWindowsFile>openjdk-15.0.2-jre-with-jfx_windows-x64.zip</jreWindowsFile>
-		<jreWindowsUrl>
-			https://gitlab.unimelb.edu.au/resplat-mediaflux/java-downloads/raw/master/openjdk-15.0.2-jre-with-jfx_windows-x64.zip
-		</jreWindowsUrl>
-		<jreLinuxFile>openjdk-15.0.2-jre-with-jfx_linux-x64.tar.gz</jreLinuxFile>
-		<jreLinuxUrl>
-			https://gitlab.unimelb.edu.au/resplat-mediaflux/java-downloads/raw/master/openjdk-15.0.2-jre-with-jfx_linux-x64.tar.gz
-		</jreLinuxUrl>
 		<dist>${project.build.directory}/dist</dist>
 	</properties>
 	<repositories>
@@ -176,141 +165,36 @@
 					<plugin>
 						<artifactId>maven-antrun-plugin</artifactId>
 						<version>1.8</version>
+						<dependencies>
+							<dependency>
+								<groupId>org.apache.ant</groupId>
+								<artifactId>ant</artifactId>
+								<version>1.10.11</version>
+							</dependency>
+							<dependency>
+								<groupId>org.apache.ant</groupId>
+								<artifactId>ant-launcher</artifactId>
+								<version>1.10.11</version>
+							</dependency>
+						</dependencies>
 						<executions>
 							<execution>
 								<phase>package</phase>
 								<configuration>
 									<target>
-										<!-- Initialisation -->
-										<tstamp />
-										<delete dir="${dist}" />
-										<mkdir dir="${dist}" />
-
-										<!-- Mac OS package -->
-										<echo message="building Mac OS package with 64 bit Java 8 Runtime..." />
-
-										<mkdir dir="${dist}/mac" />
-										<mkdir dir="${dist}/mac/temp" />
-										<mkdir dir="${dist}/mac/temp/unimelb-mf-clients-${project.version}" />
-										<mkdir dir="${dist}/mac/temp/unimelb-mf-clients-${project.version}/bin" />
-										<mkdir dir="${dist}/mac/temp/unimelb-mf-clients-${project.version}/bin/unix" />
-										<mkdir dir="${dist}/mac/temp/unimelb-mf-clients-${project.version}/lib" />
-										<copy file="${project.build.directory}/unimelb-mf-clients-${project.version}-jar-with-dependencies.jar" tofile="${dist}/mac/temp/unimelb-mf-clients-${project.version}/lib/unimelb-mf-clients.jar" />
-										<!-- 
-										<copy todir="${dist}/mac/temp/unimelb-mf-clients-${project.version}">
-											<fileset dir="${project.basedir}/src/main/config" />
-										</copy>
-										-->
-										<copy todir="${dist}/mac/temp/unimelb-mf-clients-${project.version}/bin/unix">
-											<fileset dir="${project.basedir}/src/main/scripts/unix" />
-										</copy>
-										<exec executable="curl" dir="${dist}/mac">
-											<arg value="-L" />
-											<arg value="-O" />
-											<arg value="-H" />
-											<arg value="Cookie: oraclelicense=accept-securebackup-cookie" />
-											<arg value="-k" />
-											<arg value="${jreMacUrl}" />
-										</exec>
-										<untar src="${dist}/mac/${jreMacFile}" dest="${dist}/mac/temp/unimelb-mf-clients-${project.version}" compression="gzip" />
-										<dirset dir="${dist}/mac/temp/unimelb-mf-clients-${project.version}" id="macJreDirId">
-											<include name="openjdk-*-jre*" />
-										</dirset>
-										<property name="macJreDir" refid="macJreDirId" />
-										<property name="macJavaHome" value="${macJreDir}" />
-										<replace dir="${dist}/mac/temp/unimelb-mf-clients-${project.version}/bin/unix" token="@JAVA_HOME@" value="${macJavaHome}" />
-										<replace dir="${dist}/mac/temp/unimelb-mf-clients-${project.version}/bin/unix" token="#export JAVA_HOME=" value="export JAVA_HOME=" />
-										<replace dir="${dist}/mac/temp/unimelb-mf-clients-${project.version}/bin/unix" token="#export PATH=" value="export PATH=" />
-										<tar longfile="gnu" destfile="${dist}/mac/unimelb-mf-clients-${project.version}-mac-x64.tar">
-											<tarfileset dir="${dist}/mac/temp" filemode="755" />
-										</tar>
-										<gzip destfile="${dist}/mac/unimelb-mf-clients-${project.version}-mac-x64.tar.gz" src="${dist}/mac/unimelb-mf-clients-${project.version}-mac-x64.tar"/>
-										<delete file="${dist}/mac/unimelb-mf-clients-${project.version}-mac-x64.tar"/>
-										<delete dir="${dist}/mac/temp" />
-										<delete file="${dist}/mac/${jreMacFile}" />
-
-										<!-- Windows package -->
-										<echo message="building Windows package with 64 bit Java 8 Runtime..." />
-										<mkdir dir="${dist}/windows" />
-										<mkdir dir="${dist}/windows/temp" />
-										<mkdir dir="${dist}/windows/temp/unimelb-mf-clients-${project.version}" />
-										<mkdir dir="${dist}/windows/temp/unimelb-mf-clients-${project.version}/bin" />
-										<mkdir dir="${dist}/windows/temp/unimelb-mf-clients-${project.version}/bin/windows" />
-										<mkdir dir="${dist}/windows/temp/unimelb-mf-clients-${project.version}/lib" />
-										<copy file="${project.build.directory}/unimelb-mf-clients-${project.version}-jar-with-dependencies.jar" tofile="${dist}/windows/temp/unimelb-mf-clients-${project.version}/lib/unimelb-mf-clients.jar" />
-										<!-- 
-										<copy todir="${dist}/windows/temp/unimelb-mf-clients-${project.version}">
-											<fileset dir="${project.basedir}/src/main/config" />
-										</copy>
-										-->
-										<copy todir="${dist}/windows/temp/unimelb-mf-clients-${project.version}/bin/windows">
-											<fileset dir="${project.basedir}/src/main/scripts/windows" />
-										</copy>
-										<exec executable="curl" dir="${dist}/windows">
-											<arg value="-L" />
-											<arg value="-O" />
-											<arg value="-H" />
-											<arg value="Cookie: oraclelicense=accept-securebackup-cookie" />
-											<arg value="-k" />
-											<arg value="${jreWindowsUrl}" />
-										</exec>
-										<unzip src="${dist}/windows/${jreWindowsFile}" dest="${dist}/windows/temp/unimelb-mf-clients-${project.version}" />
-										<dirset dir="${dist}/windows/temp/unimelb-mf-clients-${project.version}" id="winJreDirId">
-											<include name="openjdk-*-jre*" />
-										</dirset>
-										<property name="winJreDir" refid="winJreDirId" />
-										<property name="winJavaHome" value="${winJreDir}" />
-										<replace dir="${dist}/windows/temp/unimelb-mf-clients-${project.version}/bin/windows" token="@JAVA_HOME@" value="${winJavaHome}" />
-										<replace dir="${dist}/windows/temp/unimelb-mf-clients-${project.version}/bin/windows" token="@REM set JAVA_HOME=" value="set JAVA_HOME=" />
-										<replace dir="${dist}/windows/temp/unimelb-mf-clients-${project.version}/bin/windows" token="@REM set PATH=" value="set PATH=" />
-										<zip destfile="${dist}/windows/unimelb-mf-clients-${project.version}-windows-x64.zip">
-											<zipfileset dir="${dist}/windows/temp" filemode="755" />
-										</zip>
-										<delete dir="${dist}/windows/temp" />
-										<delete file="${dist}/windows/${jreWindowsFile}" />
-
-										<!-- Linux package -->
-										<echo message="building Linux package with 64 bit Java 8 Runtime..." />
-
-										<mkdir dir="${dist}/linux" />
-										<mkdir dir="${dist}/linux/temp" />
-										<mkdir dir="${dist}/linux/temp/unimelb-mf-clients-${project.version}" />
-										<mkdir dir="${dist}/linux/temp/unimelb-mf-clients-${project.version}/bin" />
-										<mkdir dir="${dist}/linux/temp/unimelb-mf-clients-${project.version}/bin/unix" />
-										<mkdir dir="${dist}/linux/temp/unimelb-mf-clients-${project.version}/lib" />
-										<copy file="${project.build.directory}/unimelb-mf-clients-${project.version}-jar-with-dependencies.jar" tofile="${dist}/linux/temp/unimelb-mf-clients-${project.version}/lib/unimelb-mf-clients.jar" />
-										<!-- 
-										<copy todir="${dist}/linux/temp/unimelb-mf-clients-${project.version}">
-											<fileset dir="${project.basedir}/src/main/config" />
-										</copy>
-										-->
-										<copy todir="${dist}/linux/temp/unimelb-mf-clients-${project.version}/bin/unix">
-											<fileset dir="${project.basedir}/src/main/scripts/unix" />
-										</copy>
-										<exec executable="curl" dir="${dist}/linux">
-											<arg value="-L" />
-											<arg value="-O" />
-											<arg value="-H" />
-											<arg value="Cookie: oraclelicense=accept-securebackup-cookie" />
-											<arg value="-k" />
-											<arg value="${jreLinuxUrl}" />
-										</exec>
-										<untar src="${dist}/linux/${jreLinuxFile}" dest="${dist}/linux/temp/unimelb-mf-clients-${project.version}" compression="gzip" />
-										<dirset dir="${dist}/linux/temp/unimelb-mf-clients-${project.version}" id="linuxJreDirId">
-											<include name="openjdk-*-jre*" />
-										</dirset>
-										<property name="linuxJreDir" refid="linuxJreDirId" />
-										<property name="linuxJavaHome" value="${linuxJreDir}" />
-										<replace dir="${dist}/linux/temp/unimelb-mf-clients-${project.version}/bin/unix" token="@JAVA_HOME@" value="${linuxJavaHome}" />
-										<replace dir="${dist}/linux/temp/unimelb-mf-clients-${project.version}/bin/unix" token="#export JAVA_HOME=" value="export JAVA_HOME=" />
-										<replace dir="${dist}/linux/temp/unimelb-mf-clients-${project.version}/bin/unix" token="#export PATH=" value="export PATH=" />
-										<tar longfile="gnu" destfile="${dist}/linux/unimelb-mf-clients-${project.version}-linux-x64.tar">
-											<tarfileset dir="${dist}/linux/temp" filemode="755" />
-										</tar>
-										<gzip destfile="${dist}/linux/unimelb-mf-clients-${project.version}-linux-x64.tar.gz" src="${dist}/linux/unimelb-mf-clients-${project.version}-linux-x64.tar"/>
-										<delete file="${dist}/linux/unimelb-mf-clients-${project.version}-linux-x64.tar" />
-										<delete dir="${dist}/linux/temp" />
-										<delete file="${dist}/linux/${jreLinuxFile}" />
+										<property name="projectArtifactId"
+											value="${project.artifactId}" />
+										<property name="projectVersion"
+											value="${project.version}" />
+										<property name="projectBaseDir"
+											value="${project.basedir}" />
+										<property name="projectBuildDir"
+											value="${project.build.directory}" />
+										<property name="projectLibDir"
+											value="${project.build.directory}/lib" />
+										<ant antfile="${project.basedir}/ant-build.xml">
+											<target name="package" />
+										</ant>
 									</target>
 								</configuration>
 								<goals>
diff --git a/src/main/scripts/unix/file-list b/src/main/scripts/unix/file-list
index 8c49adb836e6d38bdd957b177779459ea83f10f5..eba1f1f54832165f265ed3ebd8b02ad5496f507c 100755
--- a/src/main/scripts/unix/file-list
+++ b/src/main/scripts/unix/file-list
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.utils.FileList ${1+"$@"}
+$JAVA -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.utils.FileList ${1+"$@"}
diff --git a/src/main/scripts/unix/scp-get b/src/main/scripts/unix/scp-get
index d9a3d184ce0ffbd4996839906163a2f18f93cc8b..8e984d4be42585064df65cc208ee8d9fe49442fd 100755
--- a/src/main/scripts/unix/scp-get
+++ b/src/main/scripts/unix/scp-get
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -Xmx200m -cp "${JAR}" unimelb.mf.client.ssh.cli.SCPGetCLI ${1+"$@"}
+$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.ssh.cli.SCPGetCLI ${1+"$@"}
diff --git a/src/main/scripts/unix/scp-put b/src/main/scripts/unix/scp-put
index b891b369331126d3a236cec6134b044fcd865864..b8ba6b5f43ab83a49df160d3a353eec79e302c91 100755
--- a/src/main/scripts/unix/scp-put
+++ b/src/main/scripts/unix/scp-put
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -Xmx200m -cp "${JAR}" unimelb.mf.client.ssh.cli.SCPPutCLI ${1+"$@"}
+$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.ssh.cli.SCPPutCLI ${1+"$@"}
diff --git a/src/main/scripts/unix/sftp-get b/src/main/scripts/unix/sftp-get
index c2417711697d4cb9954d31e194982daa2828df47..62c0cbf3ac197dfcb7c8533be290e63abbb8f11c 100755
--- a/src/main/scripts/unix/sftp-get
+++ b/src/main/scripts/unix/sftp-get
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -Xmx200m -cp "${JAR}" unimelb.mf.client.ssh.cli.SFTPGetCLI ${1+"$@"}
+$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.ssh.cli.SFTPGetCLI ${1+"$@"}
diff --git a/src/main/scripts/unix/sftp-put b/src/main/scripts/unix/sftp-put
index d9bf51bc74348c6e5f7c392d8a92cf851037af80..494c51ae7d5dff602a927c6fadb14fcdd2ae9be4 100755
--- a/src/main/scripts/unix/sftp-put
+++ b/src/main/scripts/unix/sftp-put
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -Xmx200m -cp "${JAR}" unimelb.mf.client.ssh.cli.SFTPPutCLI ${1+"$@"}
+$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.ssh.cli.SFTPPutCLI ${1+"$@"}
diff --git a/src/main/scripts/unix/unimelb-mf-archive b/src/main/scripts/unix/unimelb-mf-archive
index 32abc05885f6692f6e6234ec00a355c14bc57199..8a0f8b5125480cee2e5dec486b21c86e621996dc 100755
--- a/src/main/scripts/unix/unimelb-mf-archive
+++ b/src/main/scripts/unix/unimelb-mf-archive
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -Xmx200m -cp "${JAR}" unimelb.mf.client.archive.cli.MFArchiveCLI ${1+"$@"}
\ No newline at end of file
+$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.archive.cli.MFArchiveCLI ${1+"$@"}
\ No newline at end of file
diff --git a/src/main/scripts/unix/unimelb-mf-check b/src/main/scripts/unix/unimelb-mf-check
index 8dd2713054f9a34c91822da1c65465cb0f54f404..695e107e6ea37f5e70caa1aff56c7a0320ca3456 100755
--- a/src/main/scripts/unix/unimelb-mf-check
+++ b/src/main/scripts/unix/unimelb-mf-check
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFCheck ${1+"$@"}
+$JAVA -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFCheck ${1+"$@"}
diff --git a/src/main/scripts/unix/unimelb-mf-download b/src/main/scripts/unix/unimelb-mf-download
index 636d27f64daf0a16414a381620c1f9926c5ae676..179b65a6cdcbb69bc88f104be9784ab054158d25 100755
--- a/src/main/scripts/unix/unimelb-mf-download
+++ b/src/main/scripts/unix/unimelb-mf-download
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFDownload ${1+"$@"}
+$JAVA -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFDownload ${1+"$@"}
diff --git a/src/main/scripts/unix/unimelb-mf-import-archive b/src/main/scripts/unix/unimelb-mf-import-archive
index 9a011bad744e72e6a1e71097e96cd71cd89dcf32..1386f9f698a0128527b2070ba98f326a73656003 100644
--- a/src/main/scripts/unix/unimelb-mf-import-archive
+++ b/src/main/scripts/unix/unimelb-mf-import-archive
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFImportArchive ${1+"$@"}
+$JAVA -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFImportArchive ${1+"$@"}
diff --git a/src/main/scripts/unix/unimelb-mf-instrument-upload b/src/main/scripts/unix/unimelb-mf-instrument-upload
index b64a328975ac3a46f455d98c17b1daeccace63f7..5451ae031aa15a6a627533635b8fd81eacea1299 100755
--- a/src/main/scripts/unix/unimelb-mf-instrument-upload
+++ b/src/main/scripts/unix/unimelb-mf-instrument-upload
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFInstrumentUpload ${1+"$@"}
+$JAVA -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFInstrumentUpload ${1+"$@"}
diff --git a/src/main/scripts/unix/unimelb-mf-perf b/src/main/scripts/unix/unimelb-mf-perf
index bb4c41a0e0618749fb498d94370c37128dbeb74c..599713c4da4477d307f8a2c202c7af5c2ae42ece 100755
--- a/src/main/scripts/unix/unimelb-mf-perf
+++ b/src/main/scripts/unix/unimelb-mf-perf
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -Xmx200m -cp "${JAR}" unimelb.mf.client.perf.cli.MFPerfCLI ${1+"$@"}
\ No newline at end of file
+$JAVA -Xmx200m -cp "${JAR}" unimelb.mf.client.perf.cli.MFPerfCLI ${1+"$@"}
\ No newline at end of file
diff --git a/src/main/scripts/unix/unimelb-mf-upload b/src/main/scripts/unix/unimelb-mf-upload
index d79ce0c15bf2a5ae3c43ce84f1b0a378bf9cde24..9aef39eb0713cbfd97b5db042f437b0520660cd0 100755
--- a/src/main/scripts/unix/unimelb-mf-upload
+++ b/src/main/scripts/unix/unimelb-mf-upload
@@ -18,11 +18,14 @@ JAR=${LIB}/unimelb-mf-clients.jar
 # check if unimelb-mf-clients.jar exists
 [[ ! -f $JAR ]] && echo "${JAR} is not found." >&2 && exit 2
 
-#export JAVA_HOME=${ROOT}/@JAVA_HOME@
-#export PATH=${JAVA_HOME}/bin:${PATH}
-
-# check if java exists
-[[ -z $(which java) ]] && echo "Java is not found." >&2 && exit 1
+# JRE included?
+JRE=${ROOT}/jre
+if [[ -d ${JRE} ]]; then
+  JAVA=${JRE}/bin/java
+else
+  JAVA=$(which java)
+  [[ -z ${JAVA} ]] && echo "could not find java" && exit 1
+fi
 
 # execute the command
-java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFUpload ${1+"$@"}
+$JAVA -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "${JAR}" unimelb.mf.client.sync.cli.MFUpload ${1+"$@"}
diff --git a/src/main/scripts/windows/file-list.cmd b/src/main/scripts/windows/file-list.cmd
index 5bc8b78f533f7bb573f95475294f816c3a516f6a..31985c10ae1787aa45e272cdeac93c0bee7865fd 100755
--- a/src/main/scripts/windows/file-list.cmd
+++ b/src/main/scripts/windows/file-list.cmd
@@ -1,12 +1,22 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.utils.FileList %*
+"%JAVA%" -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.utils.FileList %*
+
+setlocal
+
diff --git a/src/main/scripts/windows/scp-get.cmd b/src/main/scripts/windows/scp-get.cmd
index 3a089cf140973840d6e4f19af148f9c44e468c3f..37b2699771b514fa065765d1067bd158f9fe5eea 100755
--- a/src/main/scripts/windows/scp-get.cmd
+++ b/src/main/scripts/windows/scp-get.cmd
@@ -1,14 +1,23 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -Xmx200m -cp "%JAR%" unimelb.mf.client.ssh.cli.SCPGetCLI %*
+"%JAVA%" -Xmx200m -cp "%JAR%" unimelb.mf.client.ssh.cli.SCPGetCLI %*
+
+endlocal
 
 
diff --git a/src/main/scripts/windows/scp-put.cmd b/src/main/scripts/windows/scp-put.cmd
index 1e32ea6bab80b7f0cf1639b1f064858357a4be35..b007e8507b01ee39118b9db3464865a8b89b1b49 100755
--- a/src/main/scripts/windows/scp-put.cmd
+++ b/src/main/scripts/windows/scp-put.cmd
@@ -1,12 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -Xmx200m -cp "%JAR%" unimelb.mf.client.ssh.cli.SCPPutCLI %*
+"%JAVA%" -Xmx200m -cp "%JAR%" unimelb.mf.client.ssh.cli.SCPPutCLI %*
+
+endlocal
diff --git a/src/main/scripts/windows/sftp-get.cmd b/src/main/scripts/windows/sftp-get.cmd
index bd4c06f79332c9eb969a78439eb40e91cc4dadf2..3dd1e330634d899bf584688a50df493ee32b5a9e 100755
--- a/src/main/scripts/windows/sftp-get.cmd
+++ b/src/main/scripts/windows/sftp-get.cmd
@@ -1,12 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -Xmx200m -cp "%JAR%" unimelb.mf.client.ssh.cli.SFTPGetCLI %*
+"%JAVA%" -Xmx200m -cp "%JAR%" unimelb.mf.client.ssh.cli.SFTPGetCLI %*
+
+endlocal
diff --git a/src/main/scripts/windows/sftp-put.cmd b/src/main/scripts/windows/sftp-put.cmd
index 78b2bf1b1050f1a3285053a856993a2ecbed0e56..aaa8713fbd25686237f029e08b212d517d7b2597 100755
--- a/src/main/scripts/windows/sftp-put.cmd
+++ b/src/main/scripts/windows/sftp-put.cmd
@@ -1,12 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -Xmx200m -cp  "%JAR%" unimelb.mf.client.ssh.cli.SFTPPutCLI %*
+"%JAVA%" -Xmx200m -cp  "%JAR%" unimelb.mf.client.ssh.cli.SFTPPutCLI %*
+
+endlocal
diff --git a/src/main/scripts/windows/unimelb-mf-archive.cmd b/src/main/scripts/windows/unimelb-mf-archive.cmd
index b724ccd3162e5f35f4b245e5aa2ba8861d502042..19768e195bafafebf35ca46c0b035d0da50f6a3b 100755
--- a/src/main/scripts/windows/unimelb-mf-archive.cmd
+++ b/src/main/scripts/windows/unimelb-mf-archive.cmd
@@ -1,12 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -Xmx200m -cp "%JAR%" unimelb.mf.client.archive.cli.MFArchiveCLI %*
+"%JAVA%" -Xmx200m -cp "%JAR%" unimelb.mf.client.archive.cli.MFArchiveCLI %*
+
+endlocal
diff --git a/src/main/scripts/windows/unimelb-mf-check.cmd b/src/main/scripts/windows/unimelb-mf-check.cmd
index 482db2efb7d9d268d715a47d62fe117f41730765..ce318fe2be898b8e0203cece3c52e034fa6ca789 100755
--- a/src/main/scripts/windows/unimelb-mf-check.cmd
+++ b/src/main/scripts/windows/unimelb-mf-check.cmd
@@ -1,12 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFCheck %*
+"%JAVA%" -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFCheck %*
+
+endlocal
diff --git a/src/main/scripts/windows/unimelb-mf-download.cmd b/src/main/scripts/windows/unimelb-mf-download.cmd
index 0a00915fc981b656cac1487f650925e1baa2d337..6dd6f837864447279c11e693a0b1eebe6b320245 100755
--- a/src/main/scripts/windows/unimelb-mf-download.cmd
+++ b/src/main/scripts/windows/unimelb-mf-download.cmd
@@ -1,11 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
-java -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFDownload %*
+
+"%JAVA%" -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFDownload %*
+
+endlocal
\ No newline at end of file
diff --git a/src/main/scripts/windows/unimelb-mf-import-archive.cmd b/src/main/scripts/windows/unimelb-mf-import-archive.cmd
index 8fadaf1fe70d2113bc73c823243a3cf2a5a0baef..8bb69170152fe7746bab75c3cb53381af219b5c5 100644
--- a/src/main/scripts/windows/unimelb-mf-import-archive.cmd
+++ b/src/main/scripts/windows/unimelb-mf-import-archive.cmd
@@ -1,12 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFImportArchive %*
+"%JAVA%" -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFImportArchive %*
+
+endlocal
diff --git a/src/main/scripts/windows/unimelb-mf-instrument-upload.cmd b/src/main/scripts/windows/unimelb-mf-instrument-upload.cmd
index ad677a596b0ae3db996b18720ebb8ef05cf7bbdc..db4b893948520aa81bdd3b585882124b3a43eca0 100755
--- a/src/main/scripts/windows/unimelb-mf-instrument-upload.cmd
+++ b/src/main/scripts/windows/unimelb-mf-instrument-upload.cmd
@@ -1,12 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFInstrumentUpload %*
+"%JAVA%" -XX:+UseG1GC -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFInstrumentUpload %*
+
+endlocal
diff --git a/src/main/scripts/windows/unimelb-mf-perf.cmd b/src/main/scripts/windows/unimelb-mf-perf.cmd
index 36c366094a681c8a639e9ad09cb2f2f4f4e04481..d4f564f46369fcc7bf8d906e1e3a658e49d211d3 100755
--- a/src/main/scripts/windows/unimelb-mf-perf.cmd
+++ b/src/main/scripts/windows/unimelb-mf-perf.cmd
@@ -1,11 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
-java -Xmx200m -cp "%JAR%" unimelb.mf.client.perf.cli.MFPerfCLI %*
+
+"%JAVA%" -Xmx200m -cp "%JAR%" unimelb.mf.client.perf.cli.MFPerfCLI %*
+
+endlocal
diff --git a/src/main/scripts/windows/unimelb-mf-upload.cmd b/src/main/scripts/windows/unimelb-mf-upload.cmd
index 8aea973462f8e5efdd6ac7cc2f6b5209572d7122..d7bc5697e82f0c07aea51832c73cf9e5dfc5be44 100755
--- a/src/main/scripts/windows/unimelb-mf-upload.cmd
+++ b/src/main/scripts/windows/unimelb-mf-upload.cmd
@@ -1,12 +1,21 @@
 @echo off
 
-pushd %~dp0..\..\
-set ROOT=%cd%
+setlocal
+
+pushd "%~dp0..\..\"
+set "ROOT=%cd%"
 popd
 
-@REM set JAVA_HOME=%ROOT%\@JAVA_HOME@
-@REM set PATH=%JAVA_HOME%\bin;%PATH%
+set "JRE=%ROOT%\jre"
+
+if exist "%JRE%\" (
+    set "JAVA=%JRE%\bin\java"
+) else (
+    set JAVA=java
+)
 
 set JAR=%ROOT%\lib\unimelb-mf-clients.jar
 
-java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFUpload %*
+"%JAVA%" -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -Xmx1g -cp "%JAR%" unimelb.mf.client.sync.cli.MFUpload %*
+
+endlocal