NoClassDefFoundError

Hi, we recently upgraded from 8.1.1 to 8.1.8.
Since then our Module doesn’t work and throws up gateway errors when trying to create a device instance.
Has something change in the inductive OPC extensions ?

Hmm, it looks like that DiagnosticsLink class was removed during the diagnostics overhaul.

(along with the old DiagnosticsPage it linked to and all the machinery and data that fed that DiagnosticsPage inside AbstractDriver)

For now I think you’ll just have to remove that link from getLinks().

As in something like this ?

Sort of; you should probably keep your AddressConfigLink.

No joy unfortunately.
New error has occurred.

Gonna need text instead of a screenshot.

Apologies

java.lang.NoSuchMethodError: 'void com.inductiveautomation.xopc.driver.api.SocketIODelegate.(com.inductiveautomation.xopc.driver.api.AbstractIODelegatingDriver, java.lang.String, int)'

at com.hanleyenergy.drivers.modbus.ModbusDriver2.(ModbusDriver2.java:44)

at com.hanleyenergy.drivers.modbus.configuration.ModbusTcpDriverType.createDriver(ModbusTcpDriverType.java:61)

at com.inductiveautomation.ignition.gateway.opcua.server.DriverAdapter$DriverAddressSpace.startup(DriverAdapter.kt:142)

at com.inductiveautomation.ignition.gateway.opcua.server.DriverAdapter.startup(DriverAdapter.kt:78)

at com.inductiveautomation.ignition.gateway.opcua.server.DeviceManager$DeviceAddressSpace.startup(DeviceManager.kt:421)

at com.inductiveautomation.ignition.gateway.opcua.server.DeviceManager.createAndStartupDevice(DeviceManager.kt:223)

at com.inductiveautomation.ignition.gateway.opcua.server.DeviceManager.registerDeviceType(DeviceManager.kt:168)

at com.inductiveautomation.ignition.gateway.opcua.OpcUaExtensionManager.registerDeviceType(OpcUaExtensionManager.kt:35)

at com.inductiveautomation.ignition.gateway.opcua.OpcUaExtensionManager.registerDriverType(OpcUaExtensionManager.kt:47)

at com.inductiveautomation.xopc.driver.common.AbstractDriverModuleHook.serviceReady(AbstractDriverModuleHook.java:101)

at com.hanleyenergy.drivers.modbus.ModuleHook.serviceReady(ModuleHook.java:90)

at com.inductiveautomation.ignition.gateway.services.ModuleServicesManagerImpl.subscribe(ModuleServicesManagerImpl.java:96)

at com.inductiveautomation.xopc.driver.common.AbstractDriverModuleHook.startup(AbstractDriverModuleHook.java:70)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.startup(ModuleManagerImpl.java:2434)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.startupModule(ModuleManagerImpl.java:1227)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$2.call(ModuleManagerImpl.java:772)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:948)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.installModuleInternal(ModuleManagerImpl.java:738)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$InstallCommand.execute(ModuleManagerImpl.java:1904)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$Receiver.receiveCall(ModuleManagerImpl.java:1857)

at com.inductiveautomation.ignition.gateway.redundancy.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:47)

at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.dispatchMessage(RedundancyManagerImpl.java:930)

at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl$ExecuteTask.run(RedundancyManagerImpl.java:1005)

at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:539)

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)

Okay, looks like the constructor for SocketIODelegate changed.

Update your Ignition SDK to 8.1.7 or 8.1.8 and you should start getting compilation errors to fix.

It has now gotten rid of most plugins

Hmm, it looks like the latest published SDK version is 8.1.7 for some reason. If you are pointed at 8.1.8 try 8.1.7 instead.

Still getting the same error in the gateway logs when I change to 8.1.7 SDK

java.lang.NoSuchMethodError: 'void com.inductiveautomation.xopc.driver.api.SocketIODelegate.(com.inductiveautomation.xopc.driver.api.AbstractIODelegatingDriver, java.lang.String, int)'

at com.hanleyenergy.drivers.modbus.ModbusDriver2.(ModbusDriver2.java:44)

at com.hanleyenergy.drivers.modbus.configuration.ModbusTcpDriverType.createDriver(ModbusTcpDriverType.java:61)

at com.inductiveautomation.ignition.gateway.opcua.server.DriverAdapter$DriverAddressSpace.startup(DriverAdapter.kt:142)

at com.inductiveautomation.ignition.gateway.opcua.server.DriverAdapter.startup(DriverAdapter.kt:78)

at com.inductiveautomation.ignition.gateway.opcua.server.DeviceManager$DeviceAddressSpace.startup(DeviceManager.kt:421)

at com.inductiveautomation.ignition.gateway.opcua.server.DeviceManager.createAndStartupDevice(DeviceManager.kt:223)

at com.inductiveautomation.ignition.gateway.opcua.server.DeviceManager.registerDeviceType(DeviceManager.kt:168)

at com.inductiveautomation.ignition.gateway.opcua.OpcUaExtensionManager.registerDeviceType(OpcUaExtensionManager.kt:35)

at com.inductiveautomation.ignition.gateway.opcua.OpcUaExtensionManager.registerDriverType(OpcUaExtensionManager.kt:47)

at com.inductiveautomation.xopc.driver.common.AbstractDriverModuleHook.serviceReady(AbstractDriverModuleHook.java:101)

at com.hanleyenergy.drivers.modbus.ModuleHook.serviceReady(ModuleHook.java:90)

at com.inductiveautomation.ignition.gateway.services.ModuleServicesManagerImpl.subscribe(ModuleServicesManagerImpl.java:96)

at com.inductiveautomation.xopc.driver.common.AbstractDriverModuleHook.startup(AbstractDriverModuleHook.java:70)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.startup(ModuleManagerImpl.java:2434)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.startupModule(ModuleManagerImpl.java:1227)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$2.call(ModuleManagerImpl.java:772)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:948)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.installModuleInternal(ModuleManagerImpl.java:738)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$InstallCommand.execute(ModuleManagerImpl.java:1904)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$Receiver.receiveCall(ModuleManagerImpl.java:1857)

at com.inductiveautomation.ignition.gateway.redundancy.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:47)

at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.dispatchMessage(RedundancyManagerImpl.java:930)

at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl$ExecuteTask.run(RedundancyManagerImpl.java:1005)

at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:539)

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)


Well, just changing the SDK is only at best going to cause a compilation error in your module.

You’re going to have to make a code change to fix this in the end. Let me see what version that change to SocketIODelegate landed in…

edit: 8.1.8 of course :roll_eyes:. Someone forgot to press a button at the end of the release pipeline to publish the 8.1.8 SDK. I let someone know… we’ll have an 8.1.8 SDK out later today you can compile against and fix this error.

perfect thanks

Just to follow up, we’ve got the 8.1.8 sdk published and you should be able to resolve the artifacts now. Let us know if you have any additional issues.

I’ve updated it to 8.1.8 and now have an error on.

 ioDelegate = new SocketIODelegate(this, hostname, port);

It is missing the variable ‘localAddress’. Can this be left as a blank string?

Yes, null or empty String should be fine.

Got rid of the status device status errors which is good.
But now I’ve run into this.

Don’t know what to tell you about that one, I don’t think it’s got anything to do with Ignition changes.

Have you pulled apart your module to make sure the properties file is included and restarted the Ignition Gateway after installing the module?

I’ve gotten a fresh version of our module that worked on 8.1.1 and upgraded it to 8.1.8 and ran into the same BundleUtil error.
The properties file is there and gateway has been restarted.

Maybe it’s a conflict with the IA Modbus module somehow. The base name it’s mentioning shouldn’t be used by your module if it’s really your module triggering this.