public void addFile(String zipPath, File file) throws IOException, CancelledException {
			if (!file.isFile()) {
				throw new AssertException("Attempted to write a directory to the jar file");
			}

			zipPath = zipPath.replaceAll("\\\\", "/"); // handle windows separators

			long modifiedTime = file.lastModified();

			ZipEntry entry = new ZipEntry(zipPath);
			entry.setTime(modifiedTime);

			try {
				zipOut.putNextEntry(entry);
			}
			catch (ZipException e) {
				System.out.println(e.getMessage());
				return;
			}

			InputStream in = new FileInputStream(file);

			byte[] bytes = new byte[4096];
			int numRead;

			while ((numRead = in.read(bytes)) != -1) {
				monitor.checkCancelled();
				zipOut.write(bytes, 0, numRead);
			}
			in.close();

			zipOut.closeEntry();

		}
Puts a directory in the jar for Ghidra Extensions. This may be empty (if
no extensions are installed) but should exist nonetheless.

@throws IOException if there's an error writing to the jar
Ghidra/Features/Base/src/main/java/ghidra/util/GhidraJarBuilder.java