From ccb2ecc17715bbf19e318b79359159c8cd346419 Mon Sep 17 00:00:00 2001 From: Doug Simon Date: Wed, 8 Oct 2025 18:05:28 +0200 Subject: [PATCH] workaround for exception translation bug --- .../annotation/AnnotationValueParser.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/annotation/AnnotationValueParser.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/annotation/AnnotationValueParser.java index 7628fd114b63..980ea82e0a10 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/annotation/AnnotationValueParser.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/annotation/AnnotationValueParser.java @@ -33,6 +33,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import jdk.graal.compiler.core.common.LibGraalSupport; import jdk.graal.compiler.util.EconomicHashMap; import jdk.vm.ci.meta.ConstantPool; import jdk.vm.ci.meta.JavaConstant; @@ -217,7 +218,19 @@ private static ResolvedJavaType parseSig(String sig, ResolvedJavaType container) if (!sig.equals("V")) { checkSig(sig); } - return UnresolvedJavaType.create(sig).resolve(container); + try { + return UnresolvedJavaType.create(sig).resolve(container); + } catch (Error e) { + if (LibGraalSupport.inLibGraalRuntime()) { + String s = e.toString(); + if (s.contains("NoClassDefFoundError") && s.contains(sig)) { + // Workaround for JDK that does not properly translate + // a NoClassDefFoundError from HotSpot into libgraal + throw (NoClassDefFoundError) new NoClassDefFoundError(sig).initCause(e); + } + } + throw e; + } } static Object parseEnumValue(ResolvedJavaType enumType, ByteBuffer buf, ConstantPool constPool) {