NoClassDefFoundError

Is the new module derived from IA’s old modbus example driver? Might be a leftover reference.

Unsure, the module was created for us by an Inductive dev a while back.
We tend to have conflicts each time we upgrade version, but nothing like this before.

We haven’t changed anything in the module apart from the LinkEntry issue mentioned above and using the 8.1.8 instead of 8.1.1

If you try to add a new “TCP” version of your device does the config page have all its values? What about for the IA Modbus TCP driver?

When I create a new device with our module it shows as ‘disconnected’.
Normal Ia modbus TCP works.
It never changes to Connecting.

Just asking about the settings page because that’s what the BundleUtil / properties files provide values for.

If your driver doesn’t work as expected right now it’s time to roll up your sleeves and start debugging.

I’ve done a fresh install on the gateway and as soon as installed the module it kicked this error.

org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (near "ALTER": syntax error)

at org.sqlite.core.DB.newSQLException(DB.java:909)

at org.sqlite.core.DB.newSQLException(DB.java:921)

at org.sqlite.core.DB.throwex(DB.java:886)

at org.sqlite.core.NativeDB._exec_utf8(Native Method)

at org.sqlite.core.NativeDB._exec(NativeDB.java:87)

at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:116)

at com.inductiveautomation.ignition.gateway.localdb.DelegatingDataSource$DelegatingConnection$DelegatingStatement.executeUpdate(DelegatingDataSource.java:421)

at com.inductiveautomation.ignition.gateway.localdb.AbstractDBInterface.runUpdateQuery(AbstractDBInterface.java:222)

at com.inductiveautomation.ignition.gateway.localdb.LocalDBManagerImpl$SingleConnectionDBInterface.runUpdateQuery(LocalDBManagerImpl.java:748)

at com.inductiveautomation.ignition.gateway.localdb.DDLSchemaFeature.apply(DDLSchemaFeature.java:36)

at com.inductiveautomation.ignition.gateway.localdb.LocalDBManagerImpl.updateSchema(LocalDBManagerImpl.java:332)

at com.inductiveautomation.ignition.gateway.localdb.LocalDBManagerImpl.updateSchema(LocalDBManagerImpl.java:301)

at com.hanleyenergy.drivers.modbus.ModuleHook.applySchemaHacks(ModuleHook.java:110)

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

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)


You probably don’t need to call and shouldn’t even have the applySchemaHacks method at all.

1 Like