From db006cefb4330612e1d68d624042d695be9e4163 Mon Sep 17 00:00:00 2001
From: Wilson Liu <wliu5@unimelb.edu.au>
Date: Thu, 28 Jul 2022 14:01:56 +1000
Subject: [PATCH] update the build script to use temurin openjdk jre

---
 ant-build.xml                                 |  67 +++++++
 build-all.sh                                  |   2 +-
 pom.xml                                       | 172 +++---------------
 src/main/scripts/unix/file-list               |  15 +-
 src/main/scripts/unix/scp-get                 |  15 +-
 src/main/scripts/unix/scp-put                 |  15 +-
 src/main/scripts/unix/sftp-get                |  15 +-
 src/main/scripts/unix/sftp-put                |  15 +-
 src/main/scripts/unix/unimelb-mf-archive      |  15 +-
 src/main/scripts/unix/unimelb-mf-check        |  15 +-
 src/main/scripts/unix/unimelb-mf-download     |  15 +-
 .../scripts/unix/unimelb-mf-import-archive    |  15 +-
 .../scripts/unix/unimelb-mf-instrument-upload |  15 +-
 src/main/scripts/unix/unimelb-mf-perf         |  15 +-
 src/main/scripts/unix/unimelb-mf-upload       |  15 +-
 src/main/scripts/windows/file-list.cmd        |  20 +-
 src/main/scripts/windows/scp-get.cmd          |  19 +-
 src/main/scripts/windows/scp-put.cmd          |  19 +-
 src/main/scripts/windows/sftp-get.cmd         |  19 +-
 src/main/scripts/windows/sftp-put.cmd         |  19 +-
 .../scripts/windows/unimelb-mf-archive.cmd    |  19 +-
 src/main/scripts/windows/unimelb-mf-check.cmd |  19 +-
 .../scripts/windows/unimelb-mf-download.cmd   |  20 +-
 .../windows/unimelb-mf-import-archive.cmd     |  19 +-
 .../windows/unimelb-mf-instrument-upload.cmd  |  19 +-
 src/main/scripts/windows/unimelb-mf-perf.cmd  |  20 +-
 .../scripts/windows/unimelb-mf-upload.cmd     |  19 +-
 27 files changed, 375 insertions(+), 277 deletions(-)
 create mode 100644 ant-build.xml

diff --git a/ant-build.xml b/ant-build.xml
new file mode 100644
index 0000000..02dd232
--- /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 6513054..8151e11 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 43c9b4e..097e5eb 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 8c49adb..eba1f1f 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 d9a3d18..8e984d4 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 b891b36..b8ba6b5 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 c241771..62c0cbf 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 d9bf51b..494c51a 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 32abc05..8a0f8b5 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 8dd2713..695e107 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 636d27f..179b65a 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 9a011ba..1386f9f 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 b64a328..5451ae0 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 bb4c41a..599713c 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 d79ce0c..9aef39e 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 5bc8b78..31985c1 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 3a089cf..37b2699 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 1e32ea6..b007e85 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 bd4c06f..3dd1e33 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 78b2bf1..aaa8713 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 b724ccd..19768e1 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 482db2e..ce318fe 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 0a00915..6dd6f83 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 8fadaf1..8bb6917 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 ad677a5..db4b893 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 36c3660..d4f564f 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 8aea973..d7bc569 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
-- 
GitLab