@Override
        protected Map<Path, Map<PluginType, Set<String>>> load(PluginSource source) throws IOException {
            Map<Path, Map<PluginType, Set<String>>> manifestsBySubLocation = new HashMap<>();
            for (URL url : source.urls()) {
                Path jarPath = Paths.get(url.getPath());
                manifestsBySubLocation.put(jarPath, loadManifest(jarBaseUrl(url)));
            }
            return manifestsBySubLocation;
        }
A classpath workspace is backed by multiple jars, and is not writable.
The in-memory format is a map from jar path to the manifests contained in that jar.
The control flow of the caller should not perform writes, so these exceptions indicate a bug in the program.
tools/src/main/java/org/apache/kafka/tools/ManifestWorkspace.java