Error using Ucanaccess Driver installed in Lucee admin

Error message is :
com/healthmarketscience/jackcess/util/ErrorHandler

I have installed Ucanaccess driver (ucanaccess-4.0.4.jar) Under Lucee 5.3
on Linux Debian 10 and Apache 2.4

Ucanacces driver have appeared in the datasource driver list.
(also, I can see Ucanacces files in the Lucee file structure, the jar, the lex)

When declaring a new datasource I can choose the Ucanacces driver in the driver list,
great, Then I create and get the datasource full form.
I give the mdb file (database file) address in the “database” field , like : /var/www/C006/database/cinema.mdb

I am wondering if this is the right place to point to the mdb file,
and the right path designation ?

Error is message :
com/healthmarketscience/jackcess/util/ErrorHandler

Thanks, if anybody can help me with this blocking factor using Lucee/Linux
instead Coldfusion/Windows.

I believe , this is a Ucanaccess/Lucee link problem.

Pierre.

Hi @Pierre_Larde the UcanAccess extension is maintained by a member of the community @michaelborn_me and not the Lucee dev team. I’ve pinged him so hopefully he can chime in and help.

OK, thanks,
by the way, what means : in Info Bundle (jar)
“active or not loaded” , how to load a bundle ?
Is that done by application installation ?

See the screenshot I have, I should have a version problem.

Thanks for advise.
Pierre.

Can you click show details on the error page?

Hey Pierre,
You seem to have found the root issue - Lucee doesn’t want to load the jackcess library, which is the main jar that adds Access database capability in this extension.

I’ve actually unpublished the extension for now, because I can replicate this issue and it’s keeping the extension from working at all.

Brad, do you have any clue on why Lucee would show the jar but set it to “not loaded”? Pierre’s screenshot is showing two versions of jackcess, one active and one not. When I test it after installing the extension, I only see a single version (3.0.1) and it is “not loaded”.

Also, Pierre, I haven’t tested using the Lucee admin UI for adding a datasource. For using the extension, you’ll need to manually create the datasource in code - see https://michaelborn.me/entry/creating-an-ms-access-lucee-extension#Using-the-UCanAccess-Lucee-Extension.

there maybe two versions of the extension bundle under bundles?

I think the extension handling logic doesn’t always remove older versions…

TBH, I don’t recall what the words on that screen mean. I know they had specific, OSGI-related meanings and Micha explained them to me, but I forget.

Error message is :
Lucee 5.3.3.62 Error (java.lang.NoClassDefFoundError)

Message
com/healthmarketscience/jackcess/util/ErrorHandler

Can you help me to make it working ?

I tried declaration through the Lucee admin
and manually adding this code :
class: “net.ucanaccess.jdbc.UcanaccessDriver”,
connectionString: “jdbc:ucanaccess:///var/www/C006/database/cinema.mdb”

and get the same message error

May be, I could put the right files versions at the right place ?
And I am not sure the connection string is correct Under Linux ?
jdbc:ucanaccess:///var/www/C006/database/cinema.mdb (correct linux path ?)

thanks for help.
Pierre.

It seems there is a incoherent link to the right version ?
Thanks for any help,
And what should be the right way to restart properly.

Here is the details of error :

lucee.runtime.exp.NativeException: com/healthmarketscience/jackcess/util/ErrorHandler at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) at java.base/java.lang.Class.privateGetDeclaredConstructors(Unknown Source) at java.base/java.lang.Class.getConstructor0(Unknown Source) at java.base/java.lang.Class.newInstance(Unknown Source) at lucee.runtime.db.DataSourceSupport._initializeDriver(DataSourceSupport.java:124) at lucee.runtime.db.DataSourceSupport.initialize(DataSourceSupport.java:116) at lucee.runtime.db.DataSourceSupport.getConnection(DataSourceSupport.java:93) at lucee.runtime.tag.Admin._doVerifyDatasource(Admin.java:2867) at lucee.runtime.tag.Admin.doUpdateDatasource(Admin.java:2643) at lucee.runtime.tag.Admin._doStartTag(Admin.java:704) at lucee.runtime.tag.Admin.doStartTag(Admin.java:337) at services_datasource_create_cfm1334$cf.call(/admin/services.datasource.create.cfm:79) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:942) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:834) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:816) at services_datasource_cfm414$cf.call(/admin/services.datasource.cfm:108) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:942) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:834) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:816) at web_cfm$cf.call(/admin/web.cfm:448) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:942) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:834) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:816) at server_cfm$cf.call(/admin/server.cfm:2) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:942) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:834) at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:216) at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:42) at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2409) at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2399) at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2374) at lucee.runtime.engine.Request.exe(Request.java:43) at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1109) at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1055) at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97) at lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.lang.NoClassDefFoundError: com/healthmarketscience/jackcess/util/ErrorHandler … 58 more Caused by: java.lang.ClassNotFoundException: com.healthmarketscience.jackcess.util.ErrorHandler not found by ucanaccess.4.0.4 [50] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) … 58 more

Pierre, you’re not going to get this working through the CF admin - see my comment above, where I linked to my blog post on how to use the extension.

As far as that datasource goes, it does look right. Of course, I can’t say whether that file path actually points to your DB file, but at any rate that’s not really the issue here. Somehow the wrong jar (2.1.1, in your screenshot) is loaded into Lucee, and 3.0.1 is not. I have no idea why that is.

And if I replace the jar 3.0.1 files by the jar 2.1.1 (degrade the version)
Lucee should understand it ? as it look for the jar 2.1.1 (extension loaded)

Do you think, this could be a trial ?
I f so, where to get the older version 2.1.1 ?

Thanks for your comments,
Pierre.

No news about my problem ? is that a version problem ?
With no success, I will give up this environment.
Should I wait next version of Lucee to place the right Ucanaccess extension version ?
Thanks for help.
Or I reinstall the whole.
Pierre.