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. > >