Can't use EdDSA in debug mode

Hello everyone!
I’m writing some integration and sometimes need to use debugger on keycloak side.

When I run it this way:

../mvnw -Dkc.home.dir=$DIR \
  -Dmaven.repo.local=/var/m2 \
  -Dkc.db-driver=org.postgresql.Driver \
  -DdebugHost=0.0.0.0 -f server/pom.xml compile quarkus:dev \
  -DskipTestsuite -DskipExamples -DskipTests \
  -Dquarkus.class-loading.removed-artifacts="io.quarkus:quarkus-jdbc-oracle,io.quarkus:quarkus-jdbc-oracle-deployment" \
  -Dquarkus.args="start-dev --db=postgres --cache=local --db-driver=org.postgresql.Driver \
  --spi-theme-static-max-age=-1 --spi-theme-cache-themes=false --spi-theme-cache-templates=false"

It’s almost working but it looks like core subproject is attached as if it’s <16 java, so I got exception: EdDSA algorithms not supported in this JDK version

When I run it this way:

java -Dkc.home.dir=$DIR -jar server/target/lib/quarkus-run.jar start-dev

It’s working fine.

I tried with openjdk-17-jdk-headless and openjdk-21-jdk-headless
I tried also the following paramters:

   -Dmaven.compiler.source=21 \
   -Dmaven.compiler.target=21 \
   -Dmaven.compiler.release=21 \
   -Djava.version=17 \

And tried to change core/pom.xml

<properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <maven.compiler.release>17</maven.compiler.release>
        <timestamp>${maven.build.timestamp}</timestamp>
        <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
    </properties>

I use 26.0.0 tag and also tried on 25…something.

Probably someone from core devs can suggest how to make the trick.

Thank you in advance :slight_smile:

The exception details:

Summary

Uncaught server error: java.lang.UnsupportedOperationException: EdDSA algorithms not supported in this JDK version
	at org.keycloak.jose.jwk.JWKBuilder.okp(JWKBuilder.java:55)
	at org.keycloak.protocol.oidc.utils.JWKSServerUtils.lambda$getRealmJwks$3(JWKSServerUtils.java:50)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:411)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
	at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
	at org.keycloak.protocol.oidc.utils.JWKSServerUtils.getRealmJwks(JWKSServerUtils.java:55)
	at org.keycloak.protocol.oidc.OIDCLoginProtocolService.certs(OIDCLoginProtocolService.java:203)
	at org.keycloak.protocol.oidc.OIDCLoginProtocolService$quarkusrestinvoker$certs_1733fcf7c61aca04aebce7f74553f34fd667b730.invoke(Unknown Source)
	at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
	at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)
	at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:635)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2516)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2495)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1521)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:1583)