I think I see the direction; I didn't know that bundle:find-class requires slashes, not dots.
So, how do I sort out Pax Web versus the glassfish bundle where I expected it to turn up? And why does package:exports -d not reveal the combination of 174 and 187? karaf@root>bundle:find-class ExpressionFactoryImpl Expression Language 2.2 Implementation (174) com/sun/el/ExpressionFactoryImpl.class OPS4J Pax Web - Jetty (185) org/apache/el/ExpressionFactoryImpl.class OPS4J Pax Web - Jsp Support (186) org/apache/el/ExpressionFactoryImpl.class OPS4J Pax Web - Runtime (187) com/sun/el/ExpressionFactoryImpl.class On Sun, Nov 8, 2015 at 1:24 PM, Benson Margulies <[email protected]> wrote: > I tried bundle:tree-show on the hibernate bundle > (https://gist.github.com/benson-basis/d76e7c79e3a277a27efa). Maybe the > fact that it isn't showing me anything I recognize about javax.el is > the root of the trouble? > > > On Sun, Nov 8, 2015 at 1:21 PM, Benson Margulies <[email protected]> wrote: >> Felix is the framework. >> >> I do not have any PackageAdmin code. >> >> I don't have a great way to make this available to you right now. I am >> considering trying to switch to the cxf bean validation feature >> instead of the code I posted. >> >> I think the following is the most relevant backtrace: >> >> Caused by: java.lang.ClassNotFoundException: >> com.sun.el.ExpressionFactoryImpl not found by >> org.apache.cxf.cxf-rt-transports-http [102] >> at >> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558) >> at >> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79) >> at >> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998) >> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) >> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1919) >> at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:959) >> at >> org.ops4j.pax.swissbox.core.BundleClassLoader.findClass(BundleClassLoader.java:176) >> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) >> at >> org.ops4j.pax.swissbox.core.BundleClassLoader.loadClass(BundleClassLoader.java:192) >> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) >> at javax.el.FactoryFinder.newInstance(FactoryFinder.java:87) >> at javax.el.FactoryFinder.find(FactoryFinder.java:197) >> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:189) >> at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:160) >> at >> org.hibernate.validator.internal.engine.messageinterpolation.InterpolationTerm.<clinit>(InterpolationTerm.java:60) >> >> >> >> >> On Sun, Nov 8, 2015 at 1:11 PM, Benson Margulies <[email protected]> >> wrote: >>> package:exports -d does not think that more than one bundle is >>> exporting the package. >>> >>> Here's the class I built to stay out of the SPI. >>> >>> public final class OSGIValidationFactory { >>> private OSGIValidationFactory() { >>> // >>> } >>> >>> static class OSGIServiceDiscoverer implements >>> ValidationProviderResolver { >>> >>> @Override >>> public List<ValidationProvider<?>> getValidationProviders() { >>> List<ValidationProvider<?>> providers = new ArrayList<>(); >>> providers.add(new HibernateValidator()); >>> return providers; >>> } >>> } >>> >>> public static ValidatorFactory newHibernateValidatorFactory() { >>> javax.validation.Configuration<?> config = >>> Validation.byDefaultProvider() >>> .providerResolver(new OSGIServiceDiscoverer()) >>> .configure(); >>> >>> return config.buildValidatorFactory(); >>> } >>> } >>> >>> >>> On Sun, Nov 8, 2015 at 1:10 PM, Benson Margulies <[email protected]> >>> wrote: >>>> Karaf 4.0.2. >>>> >>>> I'm not sure what you mean by 'framework'. I'm just running karaf, I >>>> am not messing with the system bundle. I pulled together my own little >>>> bundle for validation that uses a custom locator to avoid the SPI, and >>>> it works in an isolated test in karaf, but when I put the whole thing >>>> together, blam. How would I investigate the possibility of multiple >>>> bundles? >>>> >>>> >>>> >>>> On Sun, Nov 8, 2015 at 1:06 PM, Jean-Baptiste Onofré <[email protected]> >>>> wrote: >>>>> Hi Benson, >>>>> >>>>> don't you have multiple bundle providing the same package ? >>>>> I suspect two bundles providing com.sun.el package (or the system >>>>> package). >>>>> >>>>> What's the Karaf version (and framework in use) ? >>>>> >>>>> Regards >>>>> JB >>>>> >>>>> >>>>> On 11/08/2015 07:04 PM, Benson Margulies wrote: >>>>>> >>>>>> I'm getting a ClassNotFoundException trying to use bean validation. >>>>>> >>>>>> karaf@root>package:exports | grep com.sun.el >>>>>> com.sun.el | 2.2.4 >>>>>> | 174 | org.glassfish.web.javax.el >>>>>> >>>>>> But: >>>>>> >>>>>> karaf@root> bundle:find-class com.sun.el.ExpressionFactoryImpl >>>>>> karaf@root> >>>>>> >>>>>> even though the class is sitting right there in the jar file for that >>>>>> bundle. >>>>>> >>>>>> karaf@root>bundle:classes 174 | grep Expr >>>>>> com/sun/el/ExpressionFactoryImpl.class >>>>>> >>>>>> what's up? >>>>>> >>>>> >>>>> -- >>>>> Jean-Baptiste Onofré >>>>> [email protected] >>>>> http://blog.nanthrax.net >>>>> Talend - http://www.talend.com
