Database connections faulted due to java.lang.ClassNotFoundException

My gateway (Ignition 8.1.10) has two database connections: the Sample_SQLite_Database and Test_Tag_DB. The databases have worked very well for a while, but have recently faulted with the following message:

java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSourceFactory at java.base/java.net.URLClassLoader.findClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) at com.inductiveautomation.ignition.gateway.IgnitionGateway.createDataSource(IgnitionGateway.java:2772) at com.inductiveautomation.ignition.gateway.datasource.DatasourceImpl.<init>(DatasourceImpl.java:198) at com.inductiveautomation.ignition.gateway.datasource.DatasourceManagerImpl.installDatasource(DatasourceManagerImpl.java:464) at com.inductiveautomation.ignition.gateway.datasource.DatasourceManagerImpl.addAll(DatasourceManagerImpl.java:442) at com.inductiveautomation.ignition.gateway.datasource.DatasourceManagerImpl.startup(DatasourceManagerImpl.java:370) at com.inductiveautomation.ignition.gateway.IgnitionGateway.startupInternal(IgnitionGateway.java:1204) at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.startup(RedundancyManagerImpl.java:290) at com.inductiveautomation.ignition.gateway.IgnitionGateway.initRedundancy(IgnitionGateway.java:732) at com.inductiveautomation.ignition.gateway.IgnitionGateway.lambda$initInternal$0(IgnitionGateway.java:666) 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)

How do I point Ignition to the correct directory?

My best guess as to what happened here is that you or somebody else deleted the commons-* JAR files from the $IGNITION/user-lib/jdbc folder. Can you confirm this?

At least 2 of the commons-* files are present.

Hmm... is /usr/local really where you have Ignition installed? That seems odd.

If that's where Ignition is installed and you're sure that's the Ignition that is running then get your wrapper logs and upload them here.

Unfortunately, /usr/local is the correct directory - we are likely reinstalling Ignition in the next few weeks. Here are the logs.
Logs.zip (2.6 MB)

You sure you have the right logs/server/whatever? That error you posted doesn't appear in them anywhere.

Those are the logs.

Well, looks like there's only ~12 hours of logging there, and it doesn't include the last gateway startup, which is when that error occurred. If you can restart and get the logs that might help.

Otherwise call support and they'll probably be able to get more information and verify the install checks out and hopefully help you.

I restarted the gateway, here's the log file. I already checked and the exception is in the log.
wrapper.log (3.1 MB)

permissions problem on /temp maybe?

14:46:32 | java.io.IOException: Unable to delete file: temp/jdbc/commons-dbcp2-2.5.02033489711022934966.jar
14:46:32 | 	at com.inductiveautomation.ignition.gateway.bootstrap.BootstrapFileUtils.forceDelete(BootstrapFileUtils.java:158)
14:46:32 | 	at com.inductiveautomation.ignition.gateway.bootstrap.BootstrapFileUtils.cleanDirectory(BootstrapFileUtils.java:123)
14:46:32 | 	at com.inductiveautomation.ignition.gateway.bootstrap.BootstrapFileUtils.deleteDirectory(BootstrapFileUtils.java:174)
14:46:32 | 	at com.inductiveautomation.ignition.gateway.bootstrap.BootstrapFileUtils.forceDelete(BootstrapFileUtils.java:150)
14:46:32 | 	at com.inductiveautomation.ignition.gateway.bootstrap.BootstrapFileUtils.cleanDirectory(BootstrapFileUtils.java:123)
14:46:32 | 	at com.inductiveautomation.ignition.gateway.bootstrap.GatewayFilter.init(GatewayFilter.java:49)
14:46:32 | 	at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:351)
14:46:32 | 	at org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:140)
14:46:32 | 	at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:731)
14:46:32 | 	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source)
14:46:32 | 	at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Unknown Source)
14:46:32 | 	at java.base/java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
14:46:32 | 	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:755)
14:46:32 | 	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
14:46:32 | 	at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449)
14:46:32 | 	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414)
14:46:32 | 	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:910)
14:46:32 | 	at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
14:46:32 | 	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
14:46:32 | 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
14:46:32 | 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
14:46:32 | 	at com.inductiveautomation.catapult.handlers.RemoteHostNameLookupHandler.doStart(RemoteHostNameLookupHandler.java:55)
14:46:32 | 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
14:46:32 | 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
14:46:32 | 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
14:46:32 | 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
14:46:32 | 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
14:46:32 | 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
14:46:32 | 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
14:46:32 | 	at org.eclipse.jetty.server.Server.start(Server.java:423)
14:46:32 | 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
14:46:32 | 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
14:46:32 | 	at org.eclipse.jetty.server.Server.doStart(Server.java:387)
14:46:32 | 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
14:46:32 | 	at com.inductiveautomation.catapult.IgnitionServer.start(IgnitionServer.java:1177)
14:46:32 | 	at com.inductiveautomation.ignition.gateway.web.WebResourceManagerImpl.start(WebResourceManagerImpl.java:325)
14:46:32 | 	at com.inductiveautomation.ignition.gateway.IgnitionGateway.start(IgnitionGateway.java:560)
14:46:32 | 	at com.inductiveautomation.ignition.gateway.IgnitionGateway.main(IgnitionGateway.java:294)
14:46:32 | 	at com.inductiveautomation.catapult.Catapult.main(Catapult.java:8)
14:46:32 | 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
14:46:32 | 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
14:46:32 | 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
14:46:32 | 	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
14:46:32 | 	at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:349)
14:46:32 | 	at java.base/java.lang.Thread.run(Unknown Source)

or maybe it's /usr/local/temp? not sure if that path is relative...