Skip to content

Unexpected java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence when use jwt keys #47701

@kingg22

Description

@kingg22

Describe the bug

After setup jwt token with rsa keys and follow the guide of it (smallrye jwt build).
Guide
The instruction of set

mp.jwt.verify.publickey.location=publicKey.pem

fail, review the error, and add

JWT_PUBLIC_LOCATION=classpath:public.pem
JWT_PRIVATE_LOCATION=classpath:private.pem

with classpath: prefix. All test and dev run perfect, but when i tried build fail in build native step.

Expected behavior

Build successfully.

Actual behavior

The build process encountered an unexpected error:

com.oracle.svm.core.util.VMError$HostedError: InternalFeature defined by com.oracle.svm.hosted.ResourcesFeature unexpectedly failed with a(n) java.util.regex.PatternSyntaxException
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:86)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.handleFeatureError(FeatureHandler.java:291)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:92)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$11(NativeImageGenerator.java:786)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.AbstractAnalysisEngine.runAnalysis(AbstractAnalysisEngine.java:181)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:783)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:592)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:550)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:539)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:721)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:143)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:98)
Caused by: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 12
private.pem\E
            ^
	at java.base/java.util.regex.Pattern.error(Pattern.java:2204)
	at java.base/java.util.regex.Pattern.escape(Pattern.java:2785)
	at java.base/java.util.regex.Pattern.atom(Pattern.java:2462)
	at java.base/java.util.regex.Pattern.sequence(Pattern.java:2386)
	at java.base/java.util.regex.Pattern.expr(Pattern.java:2245)
	at java.base/java.util.regex.Pattern.compile(Pattern.java:1945)
	at java.base/java.util.regex.Pattern.<init>(Pattern.java:1576)
	at java.base/java.util.regex.Pattern.compile(Pattern.java:1101)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ResourcesFeature.makeResourcePattern(ResourcesFeature.java:371)
	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.concurrent.ConcurrentHashMap$KeySpliterator.forEachRemaining(ConcurrentHashMap.java:3573)
	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 java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
	at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ResourcesFeature.compilePatterns(ResourcesFeature.java:361)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ResourcesFeature.duringAnalysis(ResourcesFeature.java:339)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$10(NativeImageGenerator.java:786)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:90)
	... 9 more


> Task :quarkusBuild FAILED

How to Reproduce?

Run with gradle in windows and docker desktop.

./gradlew build -Dquarkus.native.enabled=false -Dquarkus.package.jar.enabled=true -Dquarkus.native.container-build=true -Dquarkus.package.jar.type=uber-jar'

libs

quarkus-smallrye-jwt = { group = "io.quarkus", name = "quarkus-smallrye-jwt" }
quarkus-smallrye-jwt-build = { group = "io.quarkus", name = "quarkus-smallrye-jwt-build" }

application.properties

quarkus.native.additional-build-args=--initialize-at-run-time=com.itextpdf.kernel.font.FontUtil\\,com.itextpdf.kernel.crypto.OutputStreamAesGcmEncryption

# JWT
# for .env as long string
#security.jwt.private=${JWT_PRIVATE} # Quarkus fail to load long strings
#security.jwt.public=${JWT_PUBLIC} # Quarkus fail to load long strings
# for docker secrets
#security.jwt.private.key=${JWT_PRIVATE_KEY}
#security.jwt.public.key=${JWT_PUBLIC_KEY}
security.jwt.issuer=${JWT_ISSUER:API_VACUNAS_PANAMA}
# en segundos...
security.jwt.expiration-time=${JWT_EXPIRATION_TIME:3600}
security.jwt.refresh-time=${JWT_REFRESH_TIME:86400}

# jwt
# References: https://quarkus.io/guides/security-jwt#additional-smallrye-jwt-configuration
quarkus.smallrye-jwt.enabled=true
## Para VERIFICAR
#mp.jwt.verify.publickey=${security.jwt.public} # Quarkus fail to load long strings
mp.jwt.verify.publickey.location=${JWT_PUBLIC_LOCATION}
mp.jwt.verify.issuer=${security.jwt.issuer}
## Para FIRMAR
#smallrye.jwt.verify.secretkey=${security.jwt.private} # Quarkus fail to load long strings
# Caused by: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 12 private.pem\R
smallrye.jwt.sign.key.location=${JWT_PRIVATE_LOCATION}
smallrye.jwt.new-token.issuer=${security.jwt.issuer}

quarkus.native.resources.includes=*.pem

Output of uname -a or ver

Microsoft Windows [Versión 10.0.26100.3775]

Output of java -version

openjdk 21.0.2 2024-01-16 OpenJDK Runtime Environment GraalVM CE 21.0.2+13.1 (build 21.0.2+13-jvmci-23.1-b30) OpenJDK 64-Bit Server VM GraalVM CE 21.0.2+13.1 (build 21.0.2+13-jvmci-23.1-b30, mixed mode, sharing)

Mandrel or GraalVM version (if different from Java)

No response

Quarkus version or git rev

quarkus = "3.21.4"

Build tool (ie. output of mvnw --version or gradlew --version)

Gradle 8.13 Build time: 2025-02-25 09:22:14 UTC Revision: 073314332697ba45c16c0a0ce1891fa6794179ff Kotlin: 2.0.21 Groovy: 3.0.22 Ant: Apache Ant(TM) version 1.10.15 compiled on August 25 2024 Launcher JVM: 21.0.2 (GraalVM Community 21.0.2+13-jvmci-23.1-b30) Daemon JVM: Compatible with Java 21, GraalVM Community (from gradle/gradle-daemon-jvm.properties) OS: Windows 11 10.0 amd64

Additional information

Can I disable native build step?
Pd. Please add support of Liquibase with hibernate reactive or indicate in the Liquibase or Hibernate Reactive guides that they do not work together. Sorry if this is not an issue and it's my problem.

Image

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions