From 61b9d548a3066fa9c5468111c00a48c017f33d84 Mon Sep 17 00:00:00 2001
From: Stephane Dallongeville <stephane.dallongeville@pasteur.fr>
Date: Wed, 17 Nov 2021 17:21:40 +0100
Subject: [PATCH] Fixed MM JARs loading to not load duplicated libraries

---
 .../MicroManager/tools/MMUtils.java           | 23 +++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/tools/MMUtils.java b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/tools/MMUtils.java
index cf5ba3c..7cf14be 100644
--- a/src/main/java/plugins/tprovoost/Microscopy/MicroManager/tools/MMUtils.java
+++ b/src/main/java/plugins/tprovoost/Microscopy/MicroManager/tools/MMUtils.java
@@ -152,7 +152,7 @@ public class MMUtils
 
         try
         {
-            loaded = loadJarFrom(new File(uManagerRep + FileUtil.separator + "plugins" + FileUtil.separator
+            loaded = loadJarsFrom(new File(uManagerRep + FileUtil.separator + "plugins" + FileUtil.separator
                     + "Micro-Manager" + FileUtil.separator));
         }
         finally
@@ -840,7 +840,7 @@ public class MMUtils
         return true;
     }
 
-    private static boolean loadJarFrom(File microManagerDirectoryPath)
+    private static boolean loadJarsFrom(File microManagerDirectoryPath)
     {
         File[] files = FileUtil.getFiles(microManagerDirectoryPath, new FileFilter()
         {
@@ -863,7 +863,26 @@ public class MMUtils
                 final String ext = FileUtil.getFileExtension(path, false).toLowerCase();
 
                 if (ext.equals("jar") || ext.equals("class"))
+                {
+                    // don't load libraries that area already included in Icy
+                    if (path.contains("clojure"))
+                        continue;
+                    if (path.contains("rsyntaxtextarea"))
+                        continue;
+                    if (path.contains("swingx"))
+                        continue;
+                    if (path.contains("ome-xml"))
+                        continue;
+                    if (path.contains("jfreechart"))
+                        continue;
+                    if (path.contains("jcommon"))
+                        continue;
+                    if (path.contains("formats-"))
+                        continue;
+
+                    // we can add it
                     ((PluginClassLoader) cl).add(path);
+                }
             }
         }
 
-- 
GitLab