diff --git a/packages/py-spinnfrontendcommon/package.py b/packages/py-spinnfrontendcommon/package.py
index f780283da3b694bddd25ee4dd46abd9e924d710c..dca158ebc08290ed070436e7aad209d172b3a250 100644
--- a/packages/py-spinnfrontendcommon/package.py
+++ b/packages/py-spinnfrontendcommon/package.py
@@ -11,6 +11,7 @@ from urllib.request import urlretrieve
 
 
 _JAR_URL = "https://github.com/SpiNNakerManchester/JavaSpiNNaker/releases/download/7.0.0/spinnaker-exe.jar"
+_JAR_SHA256 = "2d909c7fb3aa15886acf26febb1bd48e25db0c347a231944aa6a5f86107bb55b"
 
 class PySpinnfrontendcommon(PythonPackage):
     """This package provides utilities for specifying binary data
@@ -30,16 +31,19 @@ class PySpinnfrontendcommon(PythonPackage):
 
     depends_on("java@11:")
 
+    resource(name="spinnaker-exe.jar", url=_JAR_URL, checksum=_JAR_SHA256, expand=False, placement="resource_root/JavaSpiNNaker/SpiNNaker-front-end/target")
+
     def install(self, spec, prefix):
         super(PySpinnfrontendcommon, self).install(spec, prefix)
 
         # Work out the python version installed, so we know where to put
         # the java code!
-        python_spec = find("python@3.7:")[0]
-        python_version = ".".join(str(v) for v in python_spec.version.version[0:2])
+        spec["python"].version.up_to(2)
         python_lib = prefix.lib.join(f"python{python_version}")
-        java_folder = python_lib.JavaSpiNNaker.join("SpiNNaker-front-end").target
-        java_exe = java_folder.join("spinnaker-exe.jar")
-        makedirs(java_folder)
-        urlretrieve(_JAR_URL, java_exe)
-        tty.debug(f"Received {java_exe} from {_JAR_URL}")
+        install_tree("resource_root", python_lib)
+
+        # Test where things are now installed
+        tty.debug(f"Checking contents of {prefix}")
+        for root, dirnames, filenames in os.walk(prefix):
+            for filename in filenames:
+                tty.debug(os.path.join(root, filename))