Skip to content

Conversation

@gsmet
Copy link
Member

@gsmet gsmet commented Dec 20, 2025

Fixes #50535

@quarkus-bot quarkus-bot bot added area/container-image area/core area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/platform Issues related to definition and interaction with Quarkus Platform labels Dec 20, 2025
* Version uses for the native builder image.
*/
public static final String NATIVE_BUILDER_VERSION = "jdk-21";
public static final String NATIVE_BUILDER_VERSION = "jdk-25";
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zakkak I would like your blessing on this one: by adding the full support for Java 25, that means that projects created with Java 25 will target Java 25 and so we need the Mandrel builder to support Java 25. Until now, we always had only one builder for all Java versions and I think that's probably best.

Now the big question: are there any remaining issues using Mandrel for Java 25 or were all the issues sorted out? If they are not sorted out, can we live with them or are they too annoying?

@gsmet
Copy link
Member Author

gsmet commented Dec 20, 2025

/cc @Sanne

@quarkus-bot

This comment has been minimized.

@github-actions
Copy link

github-actions bot commented Dec 20, 2025

🎊 PR Preview 9340b2b has been successfully built and deployed to https://quarkus-pr-main-51677-preview.surge.sh/version/main/guides/

  • Images of blog posts older than 3 months are not available.
  • Newsletters older than 3 months are not available.

@quarkus-bot

This comment has been minimized.

@quarkus-bot

This comment has been minimized.

@quarkus-bot

This comment has been minimized.

@gsmet gsmet marked this pull request as draft December 22, 2025 16:51
@gsmet
Copy link
Member Author

gsmet commented Dec 22, 2025

@zakkak so NativeAgentIT was failing because the agent now generates a reachability-metadata.json (see #50294). I worked around the issue. The patch might not be in its final form as I have seen you thought of just dropping the previous support but I'm not entirely sure which parameter you would need to pass to the agent for Java < 25 to generate the new format.

With the last commit I pushed, the build completes but something is incorrect:

2025-12-22 17:40:58,632 gsmet /home/gsmet/git/quarkus/integration-tests/maven/target/test-classes/projects/native-agent-integration/target/acme-1.0-SNAPSHOT-runner[407406] ERROR [io.qua.run.Application] (main) Failed to start application: java.lang.RuntimeException: Failed to start quarkus
        at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
        at io.quarkus.runtime.Application.start(Application.java:105)
        at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:119)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:78)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:50)
        at io.quarkus.runtime.Quarkus.run(Quarkus.java:142)
        at io.quarkus.runner.GeneratedMain.main(Unknown Source)
Caused by: java.lang.RuntimeException: Unable to start HTTP server
        at io.quarkus.vertx.http.runtime.VertxHttpRecorder.doServerStart(VertxHttpRecorder.java:984)
        at io.quarkus.vertx.http.runtime.VertxHttpRecorder.startServer(VertxHttpRecorder.java:373)
        at io.quarkus.runner.recorded.VertxHttpProcessor$openSocket1873327713.deploy_0(Unknown Source)
        at io.quarkus.runner.recorded.VertxHttpProcessor$openSocket1873327713.deploy(Unknown Source)
        ... 7 more
Caused by: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.PlatformDependent
        at [email protected]/java.util.concurrent.CompletableFuture.wrapInExecutionException(CompletableFuture.java:345)
        at [email protected]/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:440)
        at [email protected]/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2094)
        at io.quarkus.vertx.http.runtime.VertxHttpRecorder.doServerStart(VertxHttpRecorder.java:901)
        ... 10 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.PlatformDependent
        at io.netty.channel.group.DefaultChannelGroup.<init>(DefaultChannelGroup.java:48)
        at io.netty.channel.group.DefaultChannelGroup.<init>(DefaultChannelGroup.java:84)
        at io.vertx.core.net.impl.ServerChannelLoadBalancer.<init>(ServerChannelLoadBalancer.java:43)
        at io.vertx.core.net.impl.TCPServerBase.listen(TCPServerBase.java:230)
        at io.vertx.core.net.impl.TCPServerBase.bind(TCPServerBase.java:183)
        at io.vertx.core.http.impl.HttpServerImpl.listen(HttpServerImpl.java:190)
        at io.vertx.core.http.HttpServer.listen(HttpServer.java:228)
        at io.vertx.core.http.HttpServer.listen(HttpServer.java:241)
        at io.quarkus.vertx.http.runtime.VertxHttpRecorder$WebDeploymentVerticle.setupTcpHttpServer(VertxHttpRecorder.java:1351)
        at io.quarkus.vertx.http.runtime.VertxHttpRecorder$WebDeploymentVerticle.start(VertxHttpRecorder.java:1265)
        at io.vertx.core.impl.DeploymentManager.lambda$doDeploy$5(DeploymentManager.java:210)
        at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270)
        at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:252)
        at io.vertx.core.impl.ContextInternal.lambda$runOnContext$0(ContextInternal.java:50)
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at [email protected]/java.lang.Thread.runWith(Thread.java:1487)
        at [email protected]/java.lang.Thread.run(Thread.java:1474)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:808)

I wonder if somehow you need to fully embrace reachability-metadata.json if you have it in the config dir but I haven't verifier this hypothesis.

I thought about starting the work on #41016 but I'm not sure what's the status of this and if you started working on it already. It's going to be cumbersome so better not do it twice :).

@gsmet
Copy link
Member Author

gsmet commented Dec 26, 2025

Apparently, the issue is related to #51667 (comment) .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/container-image area/core area/devtools Issues/PR related to maven, gradle, platform and cli tooling/plugins area/maven area/platform Issues related to definition and interaction with Quarkus Platform triage/flaky-test

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

Provide container images for Java 25

1 participant