# Module "com.inductiveautomation.perspective" threw exception during setup()

**URL:** <https://forum.inductiveautomation.com/t/module-com-inductiveautomation-perspective-threw-exception-during-setup/70082>\
**Category:** Maker\
**Tags:** ignition81, perspective\
**Created:** [February 20, 2023, 7:25pm UTC](https://forum.inductiveautomation.com/t/module-com-inductiveautomation-perspective-threw-exception-during-setup/70082 "2023-02-20T19:25:18Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![fpsileno](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/fpsileno/32/12365_2.png) [@fpsileno](https://forum.inductiveautomation.com/u/fpsileno)\
**Post date:** [February 20, 2023, 7:25pm UTC](https://forum.inductiveautomation.com/t/module-com-inductiveautomation-perspective-threw-exception-during-setup/70082/1 "2023-02-20T19:25:18Z")

</div>

Hi,

I'm using Ingnition Maker as home, with docker (inductiveautomation/ignition:latest).

I'm using a composer file with the following extra parameters:

```auto
command: >
      -n OSCR
      -m 1024
      --
      wrapper.java.initmemory=512
      -Dignition.allowunsignedmodules=true

```

With the last update (8.1.25 (b2023021409)), the perspective module is reported as faulted:

```auto
java.lang.NoClassDefFoundError: org/eclipse/jetty/websocket/servlet/WebSocketServlet
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
	at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.base/java.net.URLClassLoader.defineClass(Unknown Source)
	at java.base/java.net.URLClassLoader$1.run(Unknown Source)
	at java.base/java.net.URLClassLoader$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.net.URLClassLoader.findClass(Unknown Source)
	at com.inductiveautomation.ignition.gateway.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:37)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	at com.inductiveautomation.ignition.gateway.modules.ModuleClassLoader.loadClass(ModuleClassLoader.java:85)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	at com.inductiveautomation.perspective.gateway.GatewayHook.setup(GatewayHook.java:170)
	at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.setup(ModuleManagerImpl.java:2412)
	at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.setup(ModuleManagerImpl.java:397)
	at com.inductiveautomation.ignition.gateway.IgnitionGateway.startupInternal(IgnitionGateway.java:1207)
	at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.startup(RedundancyManagerImpl.java:301)
	at com.inductiveautomation.ignition.gateway.IgnitionGateway.initRedundancy(IgnitionGateway.java:751)
	at com.inductiveautomation.ignition.gateway.IgnitionGateway.lambda$initInternal$0(IgnitionGateway.java:685)
	at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:544)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.websocket.servlet.WebSocketServlet
	at java.base/java.net.URLClassLoader.findClass(Unknown Source)
	at com.inductiveautomation.ignition.gateway.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:37)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	at com.inductiveautomation.ignition.gateway.modules.ModuleClassLoader.loadClass(ModuleClassLoader.java:85)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	... 26 more

8.1.25 (b2023021409)
Azul Systems, Inc. 11.0.17

```

Rolling back to 8.1.24 does not seems to be straightforward:

```auto
ERROR: Version mismatch on existing volume (8.1.25) versus image (8.1.24), Ignition image version must be greater or equal to volume version.

```

What to do? 🙂

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [February 20, 2023, 7:53pm UTC](https://forum.inductiveautomation.com/t/module-com-inductiveautomation-perspective-threw-exception-during-setup/70082/2 "2023-02-20T19:53:05Z")

</div>

Do you have the Perspective module itself contained in a volume?

It looks like your version of the Perspective module doesn't match with the container's Ignition version.

---

<div class="post-metadata">

**Author:** ![fpsileno](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/fpsileno/32/12365_2.png) [@fpsileno](https://forum.inductiveautomation.com/u/fpsileno)\
**Post date:** [February 20, 2023, 9:21pm UTC](https://forum.inductiveautomation.com/t/module-com-inductiveautomation-perspective-threw-exception-during-setup/70082/3 "2023-02-20T21:21:08Z")

</div>

Yes, I had that! Thanks!

Time to update to a more flexible solution...

---

<div class="post-metadata">

**Author:** ![Kyle\_Chase](https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/32.png) [@Kyle\_Chase](https://forum.inductiveautomation.com/u/Kyle_Chase)\
**Post date:** [February 21, 2023, 2:47am UTC](https://forum.inductiveautomation.com/t/module-com-inductiveautomation-perspective-threw-exception-during-setup/70082/4 "2023-02-21T02:47:54Z")

</div>

I would not map the modules directory. I would map individual third party modules into the modules directory.

---

<div class="post-metadata">

**Author:** ![fpsileno](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/fpsileno/32/12365_2.png) [@fpsileno](https://forum.inductiveautomation.com/u/fpsileno)\
**Post date:** [February 21, 2023, 8:57pm UTC](https://forum.inductiveautomation.com/t/module-com-inductiveautomation-perspective-threw-exception-during-setup/70082/5 "2023-02-21T20:57:42Z")

</div>

Yes, that's what I did, I was not aware that I could just put its file in the directory to enable a module!
