I'm currently studying and experimenting in ignition sdk modules. And i noticed that when a perspective-component-minimal module is installed in the gateway, the drag and drop svg action into the designer is not working anymore.
This is the behaviour when the module is installed.
And when i uninstalled/removed the perspective-component-minimal module
Other details and information:
- Ignition version used - 8.1.45 (b2025010709)
- Java version (Used in gradle build) - java version "17" 2021-09-14 LTS
- Gradlewrapper was used to build the perspective-component-minimal
- Initially, the module has error, so to bypass the error, i commented out the part in GatewayHook script.
ERROR:
com.inductiveautomation.ignition.common.modules.ModuleLoadException: Unable to load hook class "io.ia.example.perspective.min.gateway.OneComponentGatewayHook" for module "io.ia.example.perspective.min".
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.loadHook(ModuleManagerImpl.java:2375)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.load(ModuleManagerImpl.java:2048)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.startupModule(ModuleManagerImpl.java:1183)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$2.call(ModuleManagerImpl.java:734)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:913)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.installModuleInternal(ModuleManagerImpl.java:700)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$InstallCommand.doExecute(ModuleManagerImpl.java:1915)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$AbstractModuleCommand.execute(ModuleManagerImpl.java:1864)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$Receiver.receiveCall(ModuleManagerImpl.java:1820)
at com.inductiveautomation.ignition.gateway.redundancy.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:47)
at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.dispatchMessage(RedundancyManagerImpl.java:1044)
at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl$ExecuteTask.run(RedundancyManagerImpl.java:1112)
at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:550)
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.NoClassDefFoundError: jakarta/servlet/http/HttpServletResponse
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.base/java.lang.Class.getMethodsRecursive(Unknown Source)
at java.base/java.lang.Class.getMethod0(Unknown Source)
at java.base/java.lang.Class.getMethod(Unknown Source)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.loadHook(ModuleManagerImpl.java:2361)
... 18 more
Caused by: java.lang.ClassNotFoundException: jakarta.servlet.http.HttpServletResponse
at java.base/java.net.URLClassLoader.findClass(Unknown Source)
at com.inductiveautomation.ignition.gateway.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:37)
at com.inductiveautomation.ignition.gateway.modules.ModuleClassLoader.loadClass(ModuleClassLoader.java:104)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 24 more
8.1.45 (b2025010709)
Azul Systems, Inc. 17.0.13
The part in gatewayhook that I commented out to successfully install the module without error.
import jakarta.servlet.http.HttpServletResponse;
.
.
.
@Override
public void onMountedResourceRequest(String resourcePath, HttpServletResponse response) {
super.onMountedResourceRequest(resourcePath, response);
}
}
Did i do something wrong that caused this bug, or is it a recurring issue that extends beyond the module I’m currently working on/experimenting with? The drag-and-drop feature in the Designer is one of the functionalities I really need in order to build the project with my own custom modules.