From e1ff64785ed747d33af3067c985cebe82cf7a0c8 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Wed, 20 Mar 2024 14:00:23 -0400 Subject: [PATCH] Fix "Illegal prefix" error in log when custom class/resource locators are in use --- .../platform/forge/ModernFixPlatformHooksImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/forge/src/main/java/org/embeddedt/modernfix/platform/forge/ModernFixPlatformHooksImpl.java b/forge/src/main/java/org/embeddedt/modernfix/platform/forge/ModernFixPlatformHooksImpl.java index 25aa714c..b9c3fe2b 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/platform/forge/ModernFixPlatformHooksImpl.java +++ b/forge/src/main/java/org/embeddedt/modernfix/platform/forge/ModernFixPlatformHooksImpl.java @@ -55,6 +55,7 @@ import java.nio.file.Path; import java.util.Enumeration; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.function.Consumer; import java.util.function.Function; @@ -214,6 +215,12 @@ public class ModernFixPlatformHooksImpl implements ModernFixPlatformHooks { Field serviceLookupField = servicesHandler.getClass().getDeclaredField("serviceLookup"); serviceLookupField.setAccessible(true); Map serviceLookup = (Map)serviceLookupField.get(servicesHandler); + for(String s : new String[] { "classPrefixes", "resourceNames" }) { + // Reset cache fields to avoid class prefixes, etc. being falsely flagged + Field cacheField = TransformationServiceDecorator.class.getDeclaredField(s); + cacheField.setAccessible(true); + ((Set)cacheField.get(null)).clear(); + } Method getClassLoaderMethod = TransformationServiceDecorator.class.getDeclaredMethod("getClassLoader"); getClassLoaderMethod.setAccessible(true); Function> resourceEnumeratorLocator = ModernFixResourceFinder::findAllURLsForResource;