From 5e8e27b3c4f2ddf93431727ee9bb45fb1c281a38 Mon Sep 17 00:00:00 2001 From: Aman Kumar Date: Wed, 9 Jul 2025 12:02:34 +0530 Subject: [PATCH 1/2] Fix: Allow JDK folders starting with "jdk" or "jdk-" during export The export logic in JavaBuild.java previously looked only for JDK folders starting with "jdk-". However, the embedded JDK may simply be named "jdk", causing path resolution to fail and no JRE to be bundled. This leads to macOS launch issues like JRExLoadFullError and JRELoadError. Updated the filter to also allow "jdk" prefixes. --- java/src/processing/mode/java/JavaBuild.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/src/processing/mode/java/JavaBuild.java b/java/src/processing/mode/java/JavaBuild.java index aed0bc1327..438ad9386e 100644 --- a/java/src/processing/mode/java/JavaBuild.java +++ b/java/src/processing/mode/java/JavaBuild.java @@ -751,7 +751,7 @@ protected boolean exportApplication(File destFolder, try { var jdk = Files.list(new File(resources).toPath()) .filter(Files::isDirectory) - .filter(p -> p.getFileName().toString().startsWith("jdk-")) + .filter(p -> p.getFileName().toString().matches("jdk[-\\d].*")) .findFirst() .orElseThrow(); var target = new File(contentsFolder, "PlugIns/"); From d29036936cf4bef7e514e09e40db664ce4e52177 Mon Sep 17 00:00:00 2001 From: Aman Kumar Date: Wed, 9 Jul 2025 19:22:58 +0530 Subject: [PATCH 2/2] Modified code --- java/src/processing/mode/java/JavaBuild.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java/src/processing/mode/java/JavaBuild.java b/java/src/processing/mode/java/JavaBuild.java index 438ad9386e..1bee0fb57f 100644 --- a/java/src/processing/mode/java/JavaBuild.java +++ b/java/src/processing/mode/java/JavaBuild.java @@ -750,10 +750,10 @@ protected boolean exportApplication(File destFolder, if(embedJava){ try { var jdk = Files.list(new File(resources).toPath()) - .filter(Files::isDirectory) - .filter(p -> p.getFileName().toString().matches("jdk[-\\d].*")) - .findFirst() - .orElseThrow(); + .filter(Files::isDirectory) + .filter(p -> p.getFileName().toString().startsWith("jdk")) + .findFirst() + .orElseThrow(() -> new RuntimeException("No JDK folder found in resources. Expected a folder starting with 'jdk'.")); var target = new File(contentsFolder, "PlugIns/"); target.mkdirs(); Util.copyDirNative(jdk.toFile(), target);