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

Reply via email to