diff --git a/build.gradle.kts b/build.gradle.kts index 83faa0a..1430833 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -126,8 +126,6 @@ dependencies { // Other public libs implementation(group = "commons-io", name = "commons-io", version = "2.10.0") - // *** NOTE: Do not upgrade org.reflections to 0.9.12 as this causes TokenTool to fail during startup - implementation(group = "org.reflections", name = "reflections", version = "0.9.11") implementation(group = "com.google.code.gson", name = "gson", version = "2.8.6") } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index e667f6f..745fc55 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -10,7 +10,6 @@ requires imageio.psd; requires org.apache.logging.log4j; requires jai.imageio.jpeg2000; - requires reflections; requires org.apache.commons.io; requires org.apache.pdfbox; requires sentry; diff --git a/src/main/java/net/rptools/tokentool/AppSetup.java b/src/main/java/net/rptools/tokentool/AppSetup.java index 8be93ea..118be9d 100644 --- a/src/main/java/net/rptools/tokentool/AppSetup.java +++ b/src/main/java/net/rptools/tokentool/AppSetup.java @@ -17,10 +17,11 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.lang.module.ResolvedModule; import java.nio.charset.Charset; import java.util.Collection; import java.util.Set; -import java.util.regex.Pattern; +import java.util.stream.Collectors; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; @@ -32,8 +33,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.ThreadContext; -import org.reflections.Reflections; -import org.reflections.scanners.ResourcesScanner; /** Executes only the first time the application is run. */ public class AppSetup { @@ -135,11 +134,17 @@ public static int installNewOverlays(String currentVersion) throws IOException { overlayDir.mkdirs(); int overlaysInstalled = 0; - // Copy default overlays from resources - Reflections reflections = new Reflections(DEFAULT_OVERLAYS, new ResourcesScanner()); - Set resourcePathSet = reflections.getResources(Pattern.compile(".*")); - - for (String resourcePath : resourcePathSet) { + // Get list of overlays from src/main/resources + Set moduleResourceSet = ModuleLayer.boot().configuration().modules() + .stream() + .map(ResolvedModule::reference) + .filter(it -> it.descriptor().name().equals("net.rptools.tokentool")) + .findFirst().get().open() + .list() + .filter(it -> it.startsWith(DEFAULT_OVERLAYS) && !it.endsWith("/")) + .collect(Collectors.toSet()); + + for (String resourcePath : moduleResourceSet) { String resourceName = resourcePath.substring(DEFAULT_OVERLAYS.length()); InputStream resourceAsStream = AppSetup.class.getResourceAsStream("/" + resourcePath); @@ -209,11 +214,11 @@ private static boolean isNewerVersion(String version, String installedVersion) { return false; } - String[] versions = version.indexOf(".") > 0 ? version.split("\\.") : new String[] {version}; + String[] versions = version.indexOf(".") > 0 ? version.split("\\.") : new String[]{version}; String[] installedVersions = installedVersion.indexOf(".") > 0 ? installedVersion.split("\\.") - : new String[] {installedVersion}; + : new String[]{installedVersion}; int i = 0; try {