Hi JB: Thank you for the pointers.
However, I do not know where and how exactly should I change the context loader in my code. I tried but I do not know where. Could you please help me out? Thank you. Regards, Cooshal. On Mon, Jun 8, 2020 at 9:34 AM Jean-Baptiste Onofre <j...@nanthrax.net> wrote: > You can find some details about similar issue in the following thread: > > > http://karaf.922171.n3.nabble.com/java-mail-inside-Karaf-td4057507.html#a4057524 > < > http://karaf.922171.n3.nabble.com/java-mail-inside-Karaf-td4057507.html#a4057524 > > > > Let me know if it doesn’t help, I will fix your bundle for you. > > Regards > JB > > > Le 7 juin 2020 à 10:50, Kushal Gautam <kushal.gau...@gmail.com> a écrit > : > > > > Hi again: > > > > I have the following error when I try to start my bundle in karaf: > > > > Ignoring converter type: org.apache.camel.converter.AttachmentConverter > as > > a dependent class could not be found: java.lang.NoClassDefFoundError: > > javax/activation/DataHandler > > java.lang.NoClassDefFoundError: javax/activation/DataHandler > > at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?] > > at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[?:?] > > at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[?:?] > > at > > > org.apache.camel.impl.converter.AnnotationTypeConverterLoader.loadConverterMethods(AnnotationTypeConverterLoader.java:262) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:130) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.impl.converter.BaseTypeConverterRegistry.loadCoreTypeConverters(BaseTypeConverterRegistry.java:632) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.core.osgi.OsgiTypeConverter.createRegistry(OsgiTypeConverter.java:218) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at > > > org.apache.camel.core.osgi.OsgiTypeConverter.getDelegate(OsgiTypeConverter.java:197) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at > > > org.apache.camel.core.osgi.OsgiTypeConverter.mandatoryConvertTo(OsgiTypeConverter.java:124) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at > > > org.apache.camel.impl.CamelPostProcessorHelper.getInjectionPropertyValue(CamelPostProcessorHelper.java:278) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFieldProperty(DefaultCamelBeanPostProcessor.java:211) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(DefaultCamelBeanPostProcessor.java:171) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.util.ReflectionHelper.doWithFields(ReflectionHelper.java:74) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(DefaultCamelBeanPostProcessor.java:167) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.impl.DefaultCamelBeanPostProcessor.postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.impl.DefaultInjector.newInstance(DefaultInjector.java:48) > > [62:org.apache.camel.camel-core:2.20.3] > > at > > > org.apache.camel.blueprint.PackageScanRouteBuilderFinder.instantiateBuilder(PackageScanRouteBuilderFinder.java:110) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at > > > org.apache.camel.blueprint.PackageScanRouteBuilderFinder.appendBuilders(PackageScanRouteBuilderFinder.java:72) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at > > > org.apache.camel.blueprint.CamelContextFactoryBean.findRouteBuildersByPackageScan(CamelContextFactoryBean.java:325) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at > > > org.apache.camel.core.xml.AbstractCamelContextFactoryBean.findRouteBuilders(AbstractCamelContextFactoryBean.java:1087) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at > > > org.apache.camel.core.xml.AbstractCamelContextFactoryBean.setupRoutes(AbstractCamelContextFactoryBean.java:450) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at > > > org.apache.camel.blueprint.CamelContextFactoryBean.afterPropertiesSet(CamelContextFactoryBean.java:355) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] > > at > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > > ~[?:?] > > at > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > > ~[?:?] > > at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] > > at > > > org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:331) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:838) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:591) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:703) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:666) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] > > at > > > org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:338) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:152) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintContainerImpl.getComponentInstance(BlueprintContainerImpl.java:788) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.camel.blueprint.handler.CamelNamespaceHandler$CamelDependenciesFinder.process(CamelNamespaceHandler.java:988) > > [60:org.apache.camel.camel-blueprint:2.20.3] > > at > > > org.apache.aries.blueprint.container.BlueprintContainerImpl.processProcessors(BlueprintContainerImpl.java:552) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:397) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:299) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:268) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:264) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:254) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422) > > [43:org.apache.aries.blueprint.core:1.9.0] > > at > > > org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179) > > [?:?] > > at > > > org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730) > > [?:?] > > at > > > org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485) > > [?:?] > > at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) > [?:?] > > at org.apache.felix.framework.Felix.startBundle(Felix.java:2174) [?:?] > > at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) [?:?] > > at > > > org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) > > [7:org.apache.felix.fileinstall:3.6.4] > > at > > > org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) > > [7:org.apache.felix.fileinstall:3.6.4] > > at > > > org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1221) > > [7:org.apache.felix.fileinstall:3.6.4] > > at > > > org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:515) > > [7:org.apache.felix.fileinstall:3.6.4] > > at > > > org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) > > [7:org.apache.felix.fileinstall:3.6.4] > > at > > > org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) > > [7:org.apache.felix.fileinstall:3.6.4] > > Caused by: java.lang.ClassNotFoundException: javax.activation.DataHandler > > not found by org.apache.camel.camel-core [62] > > at > > > org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639) > > ~[?:?] > > at > > > org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) > > ~[?:?] > > at > > > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) > > ~[?:?] > > at java.lang.ClassLoader.loadClass(ClassLoader.java:352) ~[?:?] > > > > Just to test out, I also tried including javax.activation in the > > dependencies > > > > <dependency> > > <groupId>javax.activation</groupId> > > <artifactId>activation</artifactId> > > <version>1.1</version> > > </dependency> > > > > and embedding it in the bundle > > > > <build> > > <plugins> > > <plugin> > > <groupId>org.apache.felix</groupId> > > <artifactId>maven-bundle-plugin</artifactId> > > <extensions>true</extensions> > > <configuration> > > <instructions> > > <Embed-Dependency>activation</Embed-Dependency> > > <Import-Package> > > *;resolution:=optional > > </Import-Package> > > </instructions> > > </configuration> > > </plugin> > > </plugins> > > </build> > > > > but, either ways, it does not work. > > > > Have I misconfigured anything wrong, in this case? > > > > Any inputs/pointers would be very helpful. > > > > > > Thank you. > > > > Regards, > > Cooshal. > > > > On Thu, Jun 4, 2020 at 3:05 PM Jean-Baptiste Onofre <j...@nanthrax.net> > wrote: > > > >> Hi, > >> > >> How are you looking for the attachment ? In the class loader resource or > >> using path ? > >> > >> I guess your attachement files are not found (either because it’s not > >> private package of your bundle, or not imported correctly). > >> > >> Regards > >> JB > >> > >>> Le 4 juin 2020 à 15:03, Kushal Gautam <kushal.gau...@gmail.com> a > écrit > >> : > >>> > >>> Camel Version: 2.20.3 > >>> Java: Open JDK 1.8.0_242 > >>> Karaf: 4.2.0 > >>> > >>> Hi: > >>> > >>> Currently, I am using camel-mail to fetch mails via IMAP. > >>> > >>> The route is pretty simple and looks like: > >>> > >>> from("imaps://{{IMAP_SERVER_URL}}" > >>> + "?username={{IMAP_EMAIL_USER}}" > >>> + "&password={{IMAP_EMAIL_PASS}}" > >>> + "&unseen=true" > >>> + "&delete=false" > >>> + "&initialDelay=100" > >>> + "&delay={{IMAP_POLL_DURATION}}") > >>> ..... > >>> > >>> My custom processor looks something like below (most of the stuffs > taken > >>> from the attachments example): > >>> > >>> ... > >>> @Override > >>> public void process(Exchange exchange) throws Exception { > >>> > >>> exchange.getIn().setHeader("HAS_ATTACHMENTS", false); > >>> > >>> Map<String, DataHandler> attachments = > >>> exchange.getIn().getAttachments(); > >>> > >>> if (attachments.size() > 0) { > >>> for (String name : attachments.keySet()) { > >>> DataHandler dh = attachments.get(name); > >>> // get the file name > >>> String filename = dh.getName(); > >>> > >>> System.out.println(filename); > >>> > >>> // check if the attachment is an xml file > >>> // if not continue to another attachment > >>> if(!filename.endsWith(".xml")) { > >>> continue; > >>> } > >>> > >>> System.out.println("email has an xml attachment"); > >>> > >>> // get the content and convert it to byte[] > >>> byte[] data = exchange > >>> .getContext() > >>> .getTypeConverter() > >>> .convertTo(byte[].class, dh.getInputStream()); > >>> > >>> exchange.getIn().setHeader("FILE_NAME", filename); > >>> exchange.getIn().setHeader("HAS_ATTACHMENTS", true); > >>> > >>> exchange.getIn().setBody(data); > >>> break; > >>> } > >>> } > >>> ... > >>> > >>> If I send an email with some attachments, this code works perfectly > fine > >>> when I execute it via Netbeans. But, attachments.size() returns 0 for > the > >>> same code and same email inside Karaf. > >>> > >>> Do I need to configure something specific for this? > >>> > >>> Any inputs on this would be helpful. > >>> > >>> Thanks, > >>> Cooshal. > >> > >> > >