Can't delete Lucee extensions

G’day Guys,

We have an odd issue starting on Lucee 7.0.1.100 and persisting with Lucee 7.0.3.43.

When trying to delete any extension that is no longer required, we get the following error:

Here’s the text version:
/opt/lucee/tomcat/lucee-server/context/extensions/installed/l7f3xrgzz83l.lex

lucee.runtime.exp.NativeException: /opt/lucee/tomcat/lucee-server/context/extensions/installed/l7f3xrgzz83l.lex at java.base/sun.nio.fs.UnixException.translateToIOException(Unknown Source) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source) at java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(Unknown Source) at java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(Unknown Source) at java.base/sun.nio.fs.LinuxFileSystemProvider.readAttributes(Unknown Source) at java.base/java.nio.file.Files.readAttributes(Unknown Source) at java.base/java.util.zip.ZipFile$Source.get(Unknown Source) at java.base/java.util.zip.ZipFile$CleanableResource.(Unknown Source) at java.base/java.util.zip.ZipFile.(Unknown Source) at java.base/java.util.zip.ZipFile.(Unknown Source) at java.base/java.util.zip.ZipFile.(Unknown Source) at lucee.runtime.extension.RHExtension.load(RHExtension.java:545) at lucee.runtime.extension.RHExtension.init(RHExtension.java:264) at lucee.runtime.extension.RHExtension.getMetadata(RHExtension.java:247) at lucee.runtime.config.ConfigAdmin.removeRHExtension(ConfigAdmin.java:5247) at lucee.runtime.tag.Admin.doRemoveRHExtension(Admin.java:4500) at lucee.runtime.tag.Admin._doStartTag(Admin.java:748) at lucee.runtime.tag.Admin.doStartTag(Admin.java:356) at ext_applications_cfm184$cf.call(/admin/ext.applications.cfm:65) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1125) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1019) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:1000) at web_cfm$cf.call_000013(/admin/web.cfm:528) at web_cfm$cf.call(/admin/web.cfm:522) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1125) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1019) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:1000) at index_cfm$cf.call(/admin/index.cfm:3) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1125) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1019) at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:239) at lucee.runtime.listener.ModernAppListener.onRequest(ModernAppListener.java:108) at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2817) at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2804) at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2775) at lucee.runtime.engine.Request.exe(Request.java:45) at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1233) at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1190) at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:99) at lucee.loader.servlet.jakarta.CFMLServlet.service(CFMLServlet.java:41) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:710) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:128) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:107) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.intergral.fusionreactor.j2ee.jakarta.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:132) at com.intergral.fusionreactor.j2ee.jakarta.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:705) at com.intergral.fusionreactor.j2ee.jakarta.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:263) at com.intergral.fusionreactor.j2ee.jakarta.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:126) at com.intergral.fusionreactor.j2ee.jakarta.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:743) at com.intergral.fusionreactor.j2ee.jakarta.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:35) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.intergral.fusionreactor.j2ee.jakarta.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:69) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilterJakarta(FusionReactorStaticFilter.java:282) at com.intergral.fusionreactor.agent.pointcuts.jakarta.JakartaNewFilterChainPointCut$1.invoke(JakartaNewFilterChainPointCut.java:48) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:77) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:424) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1801) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:946) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:480) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:57) at java.base/java.lang.Thread.run(Unknown Source) Caused by: java.nio.file.NoSuchFileException: /opt/lucee/tomcat/lucee-server/context/extensions/installed/l7f3xrgzz83l.lex

The file existed prior to deleting via lucee admin and is gone after that error is displayed but the extension still shows in lucee admin.

I have tried manually deploying the plugin again which installs and upgrades fine. But everytime I try to delete it, that error happens. Doesn’t matter which extension. All cause the same error.

Not a major issue but would be good to delete any unnecessary extensions.

Any help is greatly appreciated.

OS: Ubuntu 20.04 LTS
Java Version: 21.0.10 (Eclipse Adoptium) 64bit
Tomcat Version: Apache Tomcat/11.0.21
Lucee Version: 7.0.3.43

hey! @Pondrey ,
Just delete the lucee-server/felix-cache directory and restart the server? This issue can sometimes occur if the Lucee installation was not completed properly. Please give that a try and let me know if the issue still persists.

@cfmitrah thanks for the advice, mate.

Just got this fixed now.

What ended up being the issue was we had a few orphaned extensions in .CFConfig.json that no longer existed in Lucee from old upgrades and migrations. Once those were cleaned out and the /extensions/installed contents cleaned out, everything worked perfectly again.

Also blew away the felix-cache just to be sure since it gets rebuilt anyway.