Modules side effect

Ignition 7.9.9 / java 1.8.0_161

A module work with no error.
I added another module with no link (no common jar) to the previous one, and now I have the following error in the vision client for the first module :

gexcept b.f.a(Ljava/lang/String;Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory; java.lang.NoSuchMethodError: b.f.a(Ljava/lang/String;Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory;
	at b.gw.a(Unknown Source)
	at com.smaxe.uv.client.rtsp.video.DispatcherVideo.<init>(Unknown Source)
	at com.bouyguesenergiesservices.ignition.client.videoviewer.VideoViewer$1.run(VideoViewer.java:814)
	at java.lang.Thread.run(Unknown Source)


ERROR,critical: gexcept b.f.a(Ljava/lang/String;Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory; java.lang.NoSuchMethodError: b.f.a(Ljava/lang/String;Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory;
	at b.gw.a(Unknown Source)
	at com.smaxe.uv.client.rtsp.video.DispatcherVideo.<init>(Unknown Source)
	at com.bouyguesenergiesservices.ignition.client.videoviewer.VideoViewer$1.run(VideoViewer.java:814)
	at java.lang.Thread.run(Unknown Source)

With only the first module, I don’t have any error ???

I clear client cache, gateway jar-cache, restarted, try another pc…I don’t understand how the second module can disturb the first one ?

What can I check ???

The designer and client have a single ClassLoader shared by all modules. There’s no hierarchy and no isolation.

@Kevin.Herron, Yes I see, all jar are well listed in the java console

Creating classloader with JAR files: ...
file:/C:/Users/lionel/.ignition/cache/resources/modules/...

but the behaviour is weird.
The external jar is packaged in a common module loaded in all scopes.
The call which trigger the exception is done inside an AbstractVisionComponent.

I’ve clear the gateway jar cache : “data\jar-cache” and the client/designer cache “.ignition.”
Is there any cache to empty anywhere else ?

I’m not sure what clearing the caches would do unless you’re still seeing this after uninstalling one of the modules.

The problem is that with both modules installed something on your ClassPath is causing that error.

If you can have a look at :

log_console.txt (76.6 KB)

module videoviewer work if alone.
When I start with module sipclient, I have the NoSuchMethodError.
each modules use third party jars…
I can’t figure out what can be wrong on the ClassPath.

The error is hard to understand because the final code seems to be obfuscated. Is this yours or a 3rd party? Is it possible the 2 modules or their dependencies contain code that has been obfuscated to the same package and method name?

gexcept b.f.a(Ljava/lang/String;Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory; java.lang.NoSuchMethodError: b.f.a(Ljava/lang/String;Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory;
	at b.gw.a(Unknown Source)
	at com.smaxe.uv.client.rtsp.video.DispatcherVideo.<init>(Unknown Source)
	at com.bouyguesenergiesservices.ignition.client.videoviewer.VideoViewer$1.run(VideoViewer.java:810)
	at java.lang.Thread.run(Unknown Source)

Not for my 2 ignition modules but theses modules use external 3rd party jars from 2 providers…

You'll need to obtain versions of the 3rd-party jars that don't have the dependencies. Put the dependencies in your common module so there's only one copy loaded.

Thanks @pturmel, I will ask…

@pturmel, @Kevin.Herron,
the issue was due to the fact that each modules use an external jars.
These jars provided by 2 different compagny are both protected with obfuscation.
So there were package/class name collision !
One compagny provided me a jars with no package name obfuscation and it solve the issue.

1 Like