diff --git a/packages/py-spinnfrontendcommon/package.py b/packages/py-spinnfrontendcommon/package.py
index 4ebc201bff9df914461dca982c971191e94b53f2..720c61c08c6cb4bb1cf79a6437950d04af7fad9a 100644
--- a/packages/py-spinnfrontendcommon/package.py
+++ b/packages/py-spinnfrontendcommon/package.py
@@ -6,6 +6,9 @@
 from spack.package import *
 
 
+_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
     algorithmically, and executing the specifications to produce the data."""
@@ -21,3 +24,16 @@ class PySpinnfrontendcommon(PythonPackage):
     depends_on("py-spalloc@7.0.0", type=("build", "run"))
     depends_on("py-scipy@0.16.0:", type=("build", "run"))
     depends_on("py-ebrains-drive@0.5.1:", type=("build", "run"))
+
+    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_version = spec["python"].version.up_to(2)
+        python_lib = prefix.lib.join(f"python{python_version}")
+        install_tree("resource_root", python_lib)