marcanpilami opened a new issue, #1445: URL: https://github.com/apache/shiro/issues/1445
### Search before asking - [X] I had searched in the [issues](https://github.com/apache/shiro/issues?q=is%3Aissue) and found no similar issues. ### Environment OSGi R8 Felix environment. ### Shiro version Version 2.0.0 of shiro-web, jakarta classifier. ### What was the actual outcome? Inside its manifest, `shiro-web` with jakarta classifier (as documented in https://shiro.apache.org/jakarta-ee.html) imports old javax.servlet packages instead of the newer jakarta ones. As a result, we need to install old javax bundles just to start the shiro-web bundle, and in the end we get a very logical exception `java.lang.ClassNotFoundException: jakarta.servlet.ServletContextListener not found by org.apache.shiro.web` This is logical since the code refers to `jakarta.*` packages, but as the manifest says to import `javax.*` instead jakarta packages are not seen (and we have the old packages present, but that is a lesser evil - the main issue here is that we fail). This seems to be due to the way the shiro jakarta packages are created by using shading - the manifest does not seem to be re-written at the time. I may be wrong. ### What was the expected outcome? shiro-web bundle should start. ### How to reproduce Just try to start the bundle in any OSGi R8 container like Karaf. ### Debug logs ``` org.osgi.framework.ServiceException: Service factory exception: jakarta/servlet/ServletContextListener at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:354) at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:249) at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:362) at org.apache.felix.framework.Felix.getService(Felix.java:3984) at org.apache.felix.framework.BundleContextImpl$ServiceObjectsImpl.getService(BundleContextImpl.java:554) at org.apache.felix.http.base.internal.util.ServiceUtils.safeGetServiceObjects(ServiceUtils.java:65) at org.apache.felix.http.base.internal.runtime.AbstractInfo.getService(AbstractInfo.java:253) at org.apache.felix.http.base.internal.handler.ListenerHandler.init(ListenerHandler.java:118) at org.apache.felix.http.base.internal.registry.EventListenerRegistry.addListeners(EventListenerRegistry.java:95) at org.apache.felix.http.base.internal.registry.PerContextHandlerRegistry.registerListeners(PerContextHandlerRegistry.java:257) at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.registerWhiteboardService(WhiteboardManager.java:768) at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.activate(WhiteboardManager.java:272) at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.addContextHelper(WhiteboardManager.java:365) at org.apache.felix.http.base.internal.whiteboard.tracker.JavaxServletContextHelperTracker.added(JavaxServletContextHelperTracker.java:108) at org.apache.felix.http.base.internal.whiteboard.tracker.JavaxServletContextHelperTracker.addingService(JavaxServletContextHelperTracker.java:82) at org.apache.felix.http.base.internal.whiteboard.tracker.JavaxServletContextHelperTracker.addingService(JavaxServletContextHelperTracker.java:38) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:944) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:872) at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183) at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:322) at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:265) at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.addTracker(WhiteboardManager.java:187) at org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.start(WhiteboardManager.java:172) at org.apache.felix.http.base.internal.HttpServiceController.register(HttpServiceController.java:136) at org.apache.felix.http.jetty.internal.JettyService.initializeJetty(JettyService.java:360) at org.apache.felix.http.jetty.internal.JettyService.startJetty(JettyService.java:174) at org.apache.felix.http.jetty.internal.JettyService.updated(JettyService.java:166) at org.apache.felix.http.jetty.internal.JettyManagedService.updated(JettyManagedService.java:38) at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updated(ManagedServiceTracker.java:189) at org.apache.felix.cm.impl.helper.ManagedServiceTracker.updateService(ManagedServiceTracker.java:152) at org.apache.felix.cm.impl.helper.ManagedServiceTracker.provideConfiguration(ManagedServiceTracker.java:85) at org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1418) at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:122) at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:84) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/ServletContextListener at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2338) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClassParallel(BundleWiringImpl.java:2156) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2090) at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1358) at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1612) at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1528) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2338) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClassParallel(BundleWiringImpl.java:2156) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2090) at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:2116) at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:986) at org.apache.felix.scr.impl.manager.AbstractComponentManager.initDependencyManagers(AbstractComponentManager.java:1027) at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1057) at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:955) at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:920) at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:349) ... 35 common frames omitted Caused by: java.lang.ClassNotFoundException: jakarta.servlet.ServletContextListener not found by org.apache.shiro.web [106] at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591) at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ... 66 common frames omitted ``` Manifest of the bundle : ``` Manifest-Version: 1.0 Automatic-Module-Name: org.apache.shiro.web Build-Jdk-Spec: 21 Bundle-Description: Apache Shiro is a powerful and flexible open-sourc e security framework that cleanly handles authentication, auth orization, enterprise session management, single sign-on and cryptogr aphy services. Bundle-DocURL: https://www.apache.org/ Bundle-License: https://www.apache.org/licenses/LICENSE-2.0.txt Bundle-ManifestVersion: 2 Bundle-Name: Apache Shiro :: Web Bundle-SymbolicName: org.apache.shiro.web Bundle-Vendor: The Apache Software Foundation Bundle-Version: 2.0.0 Created-By: Apache Maven Bundle Plugin 5.1.9 Export-Package: org.apache.shiro.web;version="2.0.0",org.apache.shiro. web.config;version="2.0.0";uses:="javax.servlet,org.apache.shiro.conf ig,org.apache.shiro.ini,org.apache.shiro.mgt,org.apache.shiro.web.fil ter.mgt",org.apache.shiro.web.env;version="2.0.0";uses:="javax.servle t,org.apache.shiro.config,org.apache.shiro.env,org.apache.shiro.lang. util,org.apache.shiro.mgt,org.apache.shiro.web.config,org.apache.shir o.web.filter.mgt,org.apache.shiro.web.mgt",org.apache.shiro.web.filte r;version="2.0.0";uses:="javax.servlet,org.apache.shiro.subject,org.a pache.shiro.util,org.apache.shiro.web.servlet",org.apache.shiro.web.f ilter.authc;version="2.0.0";uses:="javax.servlet,org.apache.shiro.aut hc,org.apache.shiro.subject,org.apache.shiro.web.filter,org.apache.sh iro.web.servlet",org.apache.shiro.web.filter.authz;version="2.0.0";us es:="javax.servlet,javax.servlet.http,org.apache.shiro.web.filter",or g.apache.shiro.web.filter.mgt;version="2.0.0";uses:="javax.servlet,or g.apache.shiro.config,org.apache.shiro.util",org.apache.shiro.web.fil ter.session;version="2.0.0";uses:="javax.servlet,org.apache.shiro.web .filter",org.apache.shiro.web.mgt;version="2.0.0";uses:="javax.servle t,org.apache.shiro.mgt,org.apache.shiro.realm,org.apache.shiro.sessio n,org.apache.shiro.session.mgt,org.apache.shiro.subject,org.apache.sh iro.web.servlet",org.apache.shiro.web.servlet;version="2.0.0";uses:=" javax.servlet,javax.servlet.http,org.apache.shiro.config,org.apache.s hiro.lang.util,org.apache.shiro.session,org.apache.shiro.subject,org. apache.shiro.web.config,org.apache.shiro.web.filter.mgt,org.apache.sh iro.web.mgt,org.apache.shiro.web.subject",org.apache.shiro.web.sessio n;version="2.0.0";uses:="javax.servlet.http,org.apache.shiro.session" ,org.apache.shiro.web.session.mgt;version="2.0.0";uses:="javax.servle t,javax.servlet.http,org.apache.shiro.authz,org.apache.shiro.session, org.apache.shiro.session.mgt,org.apache.shiro.web.servlet,org.apache. shiro.web.util",org.apache.shiro.web.subject;version="2.0.0";uses:="j avax.servlet,org.apache.shiro.mgt,org.apache.shiro.subject,org.apache .shiro.web.util",org.apache.shiro.web.subject.support;version="2.0.0" ;uses:="javax.servlet,org.apache.shiro.mgt,org.apache.shiro.session,o rg.apache.shiro.session.mgt,org.apache.shiro.subject,org.apache.shiro .subject.support,org.apache.shiro.web.subject",org.apache.shiro.web.t ags;version="2.0.0";uses:="javax.servlet.jsp,javax.servlet.jsp.tagext ,org.apache.shiro.subject",org.apache.shiro.web.util;version="2.0.0"; uses:="javax.servlet,javax.servlet.http,org.apache.shiro.web.env" Implementation-Title: Apache Shiro :: Web Implementation-Vendor: The Apache Software Foundation Implementation-Version: 2.0.0 Import-Package: org.apache.shiro;version="[2,3)",org.apache.shiro.auth c;version="[2,3)",org.apache.shiro.authz;version="[2,3)",org.apache.s hiro.config;version="[2,3)",org.apache.shiro.config.ogdl;version="[2, 3)",org.apache.shiro.env;version="[2,3)",org.apache.shiro.ini;version ="[2,3)",org.apache.shiro.lang.codec;version="[2,3)",org.apache.shiro .lang.io;version="[2,3)",org.apache.shiro.lang.util;version="[2,3)",o rg.apache.shiro.mgt;version="[2,3)",org.apache.shiro.realm;version="[ 2,3)",org.apache.shiro.session;version="[2,3)",org.apache.shiro.sessi on.mgt;version="[2,3)",org.apache.shiro.subject;version="[2,3)",org.a pache.shiro.subject.support;version="[2,3)",org.apache.shiro.util;ver sion="[2,3)",org.apache.shiro.web.config;version="[2,3)",org.apache.s hiro.web.env;version="[2,3)",org.apache.shiro.web.filter;version="[2, 3)",org.apache.shiro.web.filter.authc;version="[2,3)",org.apache.shir o.web.filter.authz;version="[2,3)",org.apache.shiro.web.filter.mgt;ve rsion="[2,3)",org.apache.shiro.web.filter.session;version="[2,3)",org .apache.shiro.web.mgt;version="[2,3)",org.apache.shiro.web.servlet;ve rsion="[2,3)",org.apache.shiro.web.session;version="[2,3)",org.apache .shiro.web.session.mgt;version="[2,3)",org.apache.shiro.web.subject;v ersion="[2,3)",org.apache.shiro.web.subject.support;version="[2,3)",o rg.apache.shiro.web.util;version="[2,3)",javax.servlet.jsp;resolution :=optional,javax.servlet.jsp.tagext;resolution:=optional,java.beans,j ava.io,java.lang,java.lang.invoke,java.lang.reflect,java.net,java.sec urity,java.text,java.util,java.util.concurrent,java.util.function,jav a.util.regex,java.util.stream,javax.servlet;version="[4.0,5)",javax.s ervlet.http;version="[4.0,5)",org.owasp.encoder;version="[1.2,2)",org .slf4j;version="[2.0,3)" Include-Resource: META-INF/shiro.tld=src/main/resources/META-INF/shiro .tld,META-INF/DEPENDENCIES=target/maven-shared-archive-resources/META -INF/DEPENDENCIES,META-INF/LICENSE=target/maven-shared-archive-resour ces/META-INF/LICENSE,META-INF/NOTICE=target/maven-shared-archive-reso urces/META-INF/NOTICE Private-Package: org.apache.shiro.web.config,org.apache.shiro.web.env, org.apache.shiro.web.filter,org.apache.shiro.web.filter.authc,org.apa che.shiro.web.filter.authz,org.apache.shiro.web.filter.mgt,org.apache .shiro.web.filter.session,org.apache.shiro.web.mgt,org.apache.shiro.w eb,org.apache.shiro.web.servlet,org.apache.shiro.web.session,org.apac he.shiro.web.session.mgt,org.apache.shiro.web.subject,org.apache.shir o.web.subject.support,org.apache.shiro.web.tags,org.apache.shiro.web. util Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=11))" Specification-Title: Apache Shiro :: Web Specification-Vendor: The Apache Software Foundation Specification-Version: 2.0 Tool: Bnd-6.3.1.202206071316 ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
