quarkusio/quarkus · error · RuntimeException
remote-dev can only be used with mutable applications i.e. u
Error message
remote-dev can only be used with mutable applications i.e. using the mutable-jar package type
What it means
IsolatedRemoteDevModeMain.generateApplication() builds a production-style application for remote dev mode and then requires the resulting JAR to be mutable so it can be updated at runtime. If AugmentResult's JAR is not mutable (package type is not mutable-jar), a RuntimeException is thrown explaining remote-dev requires the mutable-jar package type.
Source
Thrown at core/deployment/src/main/java/io/quarkus/deployment/dev/IsolatedRemoteDevModeMain.java:94
if (opt.isPresent()) {
client = opt.get();
break;
}
}
if (client == null) {
client = new DefaultRemoteDevClient();
}
return client;
}
private synchronized JarResult generateApplication() {
ClassLoader old = Thread.currentThread().getContextClassLoader();
try {
//ok, we have resolved all the deps
try {
AugmentResult start = augmentAction.createProductionApplication();
if (!start.getJar().mutable()) {
throw new RuntimeException(
"remote-dev can only be used with mutable applications i.e. " +
"using the mutable-jar package type");
}
//now extract the artifacts, to mirror the remote side
DevModeTask.extractDevModeClasses(start.getJar().getPath().getParent(),
curatedApplication.getApplicationModel(), null);
return start.getJar();
} catch (Throwable t) {
deploymentProblem.set(t);
log.error("Failed to generate Quarkus application", t);
return null;
}
} finally {
Thread.currentThread().setContextClassLoader(old);
}
}
private RuntimeUpdatesProcessor setupRuntimeCompilation(DevModeContext context, Path applicationRoot)View on GitHub (pinned to e1c734241f)
Solutions
- Set quarkus.package.type=mutable-jar (or quarkus.package.jar.type=mutable-jar in Quarkus 3.15+) in application.properties.
- Re-run the remote-dev goal so the regenerated application is mutable.
- Verify remote connection settings (quarkus.remote-dev.*), since a fresh augment is done each time.
Example fix
// before (application.properties) # quarkus.package.type unset (defaults to fast-jar) // after quarkus.package.type=mutable-jar
Defensive patterns
Strategy: validation
Validate before calling
// application.properties check before running remote-dev // quarkus.package.type=mutable-jar
Prevention
- Keep mutable-jar packaging configured whenever remote-dev is used.
- Document the packaging requirement in your remote-dev profile (e.g. a dedicated Maven profile).
- Verify package type after augmenting if automating remote deployments.
When it happens
Trigger: Running ./mvnw quarkus:remote-dev (or gradle quarkusRemoteDev) while quarkus.package.type (or quarkus.package.jar.type in newer versions) is not set to mutable-jar.
Common situations: Using remote development against a container/cloud host without configuring the mutable-jar packaging; default package type (fast-jar/legacy-jar) left in place.
Related errors
- Unable to deserialize the dev mode context. Does the Quarkus
- Hot deployment of the application is not supported when upda
- Failed to create compiler
- Failed to open class path file <file>
- Can only sync state on the server side of remote dev mode
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/ecda786cc8e94d45.
Report an issue: GitHub.