apache/hadoop · error · IllegalArgumentException
Resources in JARs can't be zipped; resource %s is ARCHIVE an
Error message
Resources in JARs can't be zipped; resource %s is ARCHIVE and src is: %s
What it means
Error "Resources in JARs can't be zipped; resource %s is ARCHIVE and src is: %s" thrown in apache/hadoop.
Source
Thrown at hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra/src/main/java/org/apache/hadoop/tools/dynamometer/Client.java:774
String srcScheme = srcSchemes.iterator().next();
String srcPathString = "[" + Joiner.on(",").join(srcPaths) + "]";
if (srcScheme == null
|| srcScheme.equals(FileSystem.getLocal(getConf()).getScheme())
|| srcScheme.equals("jar")) {
// Need to upload this resource to remote storage
List<File> srcFiles = srcURIs.stream().map(URI::getSchemeSpecificPart)
.map(File::new).collect(Collectors.toList());
Path dstPathBase = getRemoteStoragePath(getConf(), appId);
boolean shouldArchive = srcFiles.size() > 1
|| srcFiles.get(0).isDirectory()
|| (resource.getType() == LocalResourceType.ARCHIVE
&& Arrays.stream(ARCHIVE_FILE_TYPES).noneMatch(
suffix -> srcFiles.get(0).getName().endsWith(suffix)));
if (shouldArchive) {
if ("jar".equals(srcScheme)) {
throw new IllegalArgumentException(String.format("Resources in JARs "
+ "can't be zipped; resource %s is ARCHIVE and src is: %s",
resource.getResourcePath(), srcPathString));
} else if (resource.getType() != LocalResourceType.ARCHIVE) {
throw new IllegalArgumentException(
String.format("Resource type is %s but srcPaths were: %s",
resource.getType(), srcPathString));
}
dstPath = new Path(dstPathBase, resource.getResourcePath())
.suffix(".zip");
} else {
dstPath = new Path(dstPathBase, srcFiles.get(0).getName());
}
FileSystem remoteFS = dstPath.getFileSystem(getConf());
LOG.info("Uploading resource " + resource + " from " + srcPathString
+ " to " + dstPath);
try (OutputStream outputStream = remoteFS.create(dstPath, true)) {
if ("jar".equals(srcScheme)) {
try (InputStream inputStream = new URL(srcPaths[0]).openStream()) {View on GitHub (pinned to 2add963021)
Solutions
- Do not archive a resource of type ARCHIVE; pass the JAR directly as a FILE/LIBJAR resource instead of zipping it.
When it happens
Trigger: The dynamometer Client is asked to create an ARCHIVE out of a resource that is itself inside a JAR (non-hdfs remote scheme), which cannot be zipped; only local files or single remote files can be archived.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/43a773434b7f3858.
Report an issue: GitHub.