@@ -31,7 +31,7 @@ public class JadxExternalPluginsLoader implements JadxPluginLoader {
3131 public List <JadxPlugin > load () {
3232 close ();
3333 long start = System .currentTimeMillis ();
34- Map <Class <? extends JadxPlugin > , JadxPlugin > map = new HashMap <>();
34+ Map <String , JadxPlugin > map = new HashMap <>();
3535 loadFromClsLoader (map , thisClassLoader ());
3636 loadInstalledPlugins (map );
3737
@@ -45,7 +45,7 @@ public List<JadxPlugin> load() {
4545 }
4646
4747 public JadxPlugin loadFromJar (Path jar ) {
48- Map <Class <? extends JadxPlugin > , JadxPlugin > map = new HashMap <>();
48+ Map <String , JadxPlugin > map = new HashMap <>();
4949 loadFromJar (map , jar );
5050 int loaded = map .size ();
5151 if (loaded == 0 ) {
@@ -59,22 +59,26 @@ public JadxPlugin loadFromJar(Path jar) {
5959
6060 }
6161
62- private void loadFromClsLoader (Map <Class <? extends JadxPlugin >, JadxPlugin > map , ClassLoader classLoader ) {
63- ServiceLoader .load (JadxPlugin .class , classLoader )
64- .stream ()
65- .filter (p -> p .type ().getClassLoader () == classLoader )
66- .filter (p -> !map .containsKey (p .type ()))
67- .forEach (p -> map .put (p .type (), p .get ()));
62+ private void loadFromClsLoader (Map <String , JadxPlugin > map , ClassLoader classLoader ) {
63+ ServiceLoader <JadxPlugin > serviceLoader = ServiceLoader .load (JadxPlugin .class , classLoader );
64+ for (ServiceLoader .Provider <JadxPlugin > provider : serviceLoader .stream ().collect (Collectors .toList ())) {
65+ Class <? extends JadxPlugin > pluginClass = provider .type ();
66+ String clsName = pluginClass .getName ();
67+ if (!map .containsKey (clsName )
68+ && pluginClass .getClassLoader () == classLoader ) {
69+ map .put (clsName , provider .get ());
70+ }
71+ }
6872 }
6973
70- private void loadInstalledPlugins (Map <Class <? extends JadxPlugin > , JadxPlugin > map ) {
74+ private void loadInstalledPlugins (Map <String , JadxPlugin > map ) {
7175 List <Path > jars = JadxPluginsTools .getInstance ().getEnabledPluginJars ();
7276 for (Path jar : jars ) {
7377 loadFromJar (map , jar );
7478 }
7579 }
7680
77- private void loadFromJar (Map <Class <? extends JadxPlugin > , JadxPlugin > map , Path jar ) {
81+ private void loadFromJar (Map <String , JadxPlugin > map , Path jar ) {
7882 try {
7983 File jarFile = jar .toFile ();
8084 String clsLoaderName = JADX_PLUGIN_CLASSLOADER_PREFIX + jarFile .getName ();
0 commit comments