# Modules side effect

**URL:** <https://forum.inductiveautomation.com/t/modules-side-effect/21796>\
**Category:** Module Development\
**Created:** [January 10, 2019, 8:10pm UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796 "2019-01-10T20:10:43Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [January 10, 2019, 8:10pm UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/1 "2019-01-10T20:10:43Z")

</div>

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 :

```auto
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 ???

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [January 11, 2019, 12:13am UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/2 "2019-01-11T00:13:41Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [January 11, 2019, 8:12am UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/3 "2019-01-11T08:12:17Z")

</div>

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

```auto
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 ?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [January 11, 2019, 12:45pm UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/4 "2019-01-11T12:45:20Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [January 11, 2019, 1:06pm UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/5 "2019-01-11T13:06:44Z")

</div>

If you can have a look at :

[log\_console.txt](https://us1.discourse-cdn.com/inductiveautomation/original/2X/3/3959a301345492c82005c32915e8fda390d5f660.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.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [January 11, 2019, 1:14pm UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/6 "2019-01-11T13:14:41Z")

</div>

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?

```auto
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)

```

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [January 11, 2019, 1:38pm UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/7 "2019-01-11T13:38:10Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 11, 2019, 1:40pm UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/8 "2019-01-11T13:40:43Z")

</div>

> [@mazeyrat](#):
>
> ses 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.

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [January 11, 2019, 4:21pm UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/9 "2019-01-11T16:21:56Z")

</div>

Thanks @pturmel, I will ask…

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [January 14, 2019, 1:41pm UTC](https://forum.inductiveautomation.com/t/modules-side-effect/21796/10 "2019-01-14T13:41:54Z")

</div>

@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.
