From b86246b87cfeec95e70122ad877d17fbf2e96b08 Mon Sep 17 00:00:00 2001 From: Alexander Kriegisch Date: Fri, 4 Aug 2023 09:31:31 +0700 Subject: Use relocated ASM class names in BCException message Fixes #251. Signed-off-by: Alexander Kriegisch --- .../src/main/java/org/aspectj/weaver/bcel/LazyClassGen.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'weaver') 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); } -- cgit v1.2.3