From: Alexander Kriegisch Date: Fri, 4 Aug 2023 02:31:31 +0000 (+0700) Subject: Use relocated ASM class names in BCException message X-Git-Tag: V1_9_20~9 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b86246b87cfeec95e70122ad877d17fbf2e96b08;p=aspectj.git Use relocated ASM class names in BCException message Fixes #251. Signed-off-by: Alexander Kriegisch --- diff --git a/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java b/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java index 3feadca38..61ebfb7cf 100644 --- a/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java +++ b/weaver/src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java @@ -753,11 +753,14 @@ public final class LazyClassGen { // are required (unless turning off the verifier) if ((myGen.getMajor() == Constants.MAJOR_1_6 && world.shouldGenerateStackMaps()) || myGen.getMajor() > Constants.MAJOR_1_6) { if (!AsmDetector.isAsmAround) { - throw new BCException( - "Unable to find ASM classes (" + AsmDetector.CLASS_READER + ", " + AsmDetector.CLASS_VISITOR + ") " + - "for stackmap generation. Stackmap generation for woven code is required to avoid verify errors " + - "on a Java 1.7 or higher runtime.", AsmDetector.reasonAsmIsMissing - ); + // Fix https://github.com/eclipse-aspectj/aspectj/issues/251, using "replace('Ä', 'Ö')" to avoid non-relocated + // class names to be embedded into the error message during compile time, making it end up in the class constant + // pool unwantedly, as this clashes with post-compile ASM package relocation. + final String errorMessage = "Unable to find ASM classes (" + + AsmDetector.CLASS_READER.replace('Ä', 'Ö') + ", " + AsmDetector.CLASS_VISITOR.replace('Ä', 'Ö') + ") " + + "for stackmap generation. Stackmap generation for woven code is required to avoid verify errors " + + "on a Java 1.7 or higher runtime."; + throw new BCException(errorMessage, AsmDetector.reasonAsmIsMissing); } wovenClassFileData = StackMapAdder.addStackMaps(world, myGen.getClassName(), wovenClassFileData); }