[ https://issues.apache.org/activemq/browse/CAMEL-1035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Willem Jiang resolved CAMEL-1035. --------------------------------- Resolution: Fixed Fix Version/s: 2.0.0 1.5.1 It should work by using the spring-osgi's BundleDelegateClassLoader to load type converters. Please check out the camel latest version for verification. > ResolverUtil under Eclipse RPC (OSGi) error: Could not read entries in url: > bundleresource://36/org/apache/camel/converter > -------------------------------------------------------------------------------------------------------------------------- > > Key: CAMEL-1035 > URL: https://issues.apache.org/activemq/browse/CAMEL-1035 > Project: Apache Camel > Issue Type: Bug > Components: camel-core > Affects Versions: 1.5.0 > Reporter: Eduard Hildebrandt > Assignee: Willem Jiang > Fix For: 1.5.1, 2.0.0 > > > Using Apache Camel 1.5-SNAPSHOT with Eclipse RCP 3.x I get a > java.io.FileNotFoundException on loading the converters (see stacktrace > below). > It seems that issue CAMEL-774 is not fixed. > I tried to debug the source code: > --- SOURCE: ResolverUtil.java ---- > Method mth = loader.getClass().getMethod("getBundle", new Class[] > {}); > if (mth != null) { > // it's osgi bundle class loader, so we need to load > implementation in bundles > if (LOG.isDebugEnabled()) { > LOG.debug("Loading from osgi buindle using classloader: " > + loader); > } > loadImplementationsInBundle(test, packageName, loader, mth); > return; > } > --- END SOURCE --- > "loader.getClass().getMethod("getBundle", new Class[] {});" returns null > because the loader is of type > "org.eclipse.core.runtime.internal.adaptor.ContextFinder" and does not have a > "getBundle" method. > Please see discussion at: > http://www.nabble.com/ResolverUtil-under-Eclipse-RPC-(OSGi)-error%3A-Could-not-read-entries-in-url%3A-bundleresource%3A--36-org-apache-camel-converter-to20205017s22882.html > Sample project can be downloaded at: > http://www.fastshare.org/download/eclipse_camel_test.zip > Unzip the project and import it to you Eclipse Workspace. > You have to use Eclipse because it's an Eclipse plugin. > Instructions to start the project: > 1. Download, unzip and start an ActiveMQ server. > 2. Run "ServiceServer" as "Java-Application". > 3. Open plugin.xml and click on "Launch an Eclipse Application"; > 4. A new Eclipse instance will be start. Select "Sample Menu" "Sample > Action" in the new Eclipse window. > 5. Check the errors in the console view. > --- START TRACE LOG --- > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil findAnnotated > FEIN: Searching for annotations of org.apache.camel.Converter in packages: > [org.apache.camel.converter, org.apache.camel.spring.converter] > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: Searching for: annotated with @Converter in package: > org/apache/camel/converter using classloader: > org.eclipse.core.runtime.internal.adaptor.ContextFinder > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: It's not an osgi bundle classloader > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil getResources > AM FEINSTEN: Getting resource URL for package: org/apache/camel/converter > with classloader: > org.eclipse.core.runtime.internal.adaptor.contextfin...@983d95 > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: URL from classloader: > bundleresource://36/org/apache/camel/converter > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: Decoded urlPath: /org/apache/camel/converter > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: Scanning for classes in [/org/apache/camel/converter] matching > criteria: annotated with @Converter > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > WARNUNG: Could not read entries in url: > bundleresource://36/org/apache/camel/converter > java.io.FileNotFoundException: \org\apache\camel\converter (Das System kann > den angegebenen Pfad nicht finden) > at java.io.FileInputStream.open(Native Method) > at java.io.FileInputStream.<init>(FileInputStream.java:106) > at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:371) > at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:279) > at > org.apache.camel.util.ResolverUtil.findAnnotated(ResolverUtil.java:255) > at > org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:66) > at > org.apache.camel.impl.converter.DefaultTypeConverter.checkLoaded(DefaultTypeConverter.java:218) > at > org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:64) > at > org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:59) > at > org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:50) > at > org.apache.camel.processor.interceptor.TraceFormatter.getBodyAsString(TraceFormatter.java:115) > at > org.apache.camel.processor.interceptor.TraceFormatter.format(TraceFormatter.java:39) > at > org.apache.camel.processor.interceptor.TraceInterceptor.format(TraceInterceptor.java:68) > at org.apache.camel.processor.Logger.logMessage(Logger.java:218) > at org.apache.camel.processor.Logger.process(Logger.java:88) > at > org.apache.camel.processor.interceptor.TraceInterceptor.logExchange(TraceInterceptor.java:124) > at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:55) > at > org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43) > at > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:39) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66) > at > org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:47) > at > org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:149) > at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:134) > at > org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:92) > at > org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:74) > at > org.apache.camel.component.cxf.transport.CamelConduit$CamelOutputStream.commitOutputMessage(CamelConduit.java:168) > at > org.apache.camel.component.cxf.transport.CamelConduit$CamelOutputStream.doClose(CamelConduit.java:151) > at > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:156) > at > org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) > at > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:159) > at > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) > at > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242) > at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178) > at $Proxy84.gibAlleDimensionenUndDescriptoren(Unknown Source) > at > net.enbw.etg.rcm.pfc.marktdaten.MarktDatenProviderImpl.getAlleDimensionenUndDescriptoren(MarktDatenProviderImpl.java:183) > at > net.enbw.etg.rcm.pfc.proxies.ServiceLocator.getAlleDimensionenUndDeskriptoren(ServiceLocator.java:187) > at > net.enbw.etg.rcm.pfc.view.navigator.Navigator$2.doInBackground(Navigator.java:181) > at > net.enbw.etg.rcm.pfc.view.navigator.Navigator$2.doInBackground(Navigator.java:1) > at javax.swing.SwingWorker$1.call(SwingWorker.java:278) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at javax.swing.SwingWorker.run(SwingWorker.java:317) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) > at java.lang.Thread.run(Thread.java:619) > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: Searching for: annotated with @Converter in package: > org/apache/camel/converter using classloader: > org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: It's not an osgi bundle classloader > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil getResources > AM FEINSTEN: Getting resource URL for package: org/apache/camel/converter > with classloader: > org.eclipse.osgi.internal.baseadaptor.defaultclassloa...@cec0c5 > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: URL from classloader: > bundleresource://36/org/apache/camel/converter > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: Decoded urlPath: /org/apache/camel/converter > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: Scanning for classes in [/org/apache/camel/converter] matching > criteria: annotated with @Converter > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > WARNUNG: Could not read entries in url: > bundleresource://36/org/apache/camel/converter > java.io.FileNotFoundException: \org\apache\camel\converter (Das System kann > den angegebenen Pfad nicht finden) > at java.io.FileInputStream.open(Native Method) > at java.io.FileInputStream.<init>(FileInputStream.java:106) > at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:371) > at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:279) > at > org.apache.camel.util.ResolverUtil.findAnnotated(ResolverUtil.java:255) > at > org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:66) > at > org.apache.camel.impl.converter.DefaultTypeConverter.checkLoaded(DefaultTypeConverter.java:218) > at > org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:64) > at > org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:59) > at > org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:50) > at > org.apache.camel.processor.interceptor.TraceFormatter.getBodyAsString(TraceFormatter.java:115) > at > org.apache.camel.processor.interceptor.TraceFormatter.format(TraceFormatter.java:39) > at > org.apache.camel.processor.interceptor.TraceInterceptor.format(TraceInterceptor.java:68) > at org.apache.camel.processor.Logger.logMessage(Logger.java:218) > at org.apache.camel.processor.Logger.process(Logger.java:88) > at > org.apache.camel.processor.interceptor.TraceInterceptor.logExchange(TraceInterceptor.java:124) > at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:55) > at > org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43) > at > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:39) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41) > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66) > at > org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:47) > at > org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:149) > at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:134) > at > org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:92) > at > org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:74) > at > org.apache.camel.component.cxf.transport.CamelConduit$CamelOutputStream.commitOutputMessage(CamelConduit.java:168) > at > org.apache.camel.component.cxf.transport.CamelConduit$CamelOutputStream.doClose(CamelConduit.java:151) > at > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:156) > at > org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) > at > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:159) > at > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) > at > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242) > at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178) > at $Proxy84.gibAlleDimensionenUndDescriptoren(Unknown Source) > at > net.enbw.etg.rcm.pfc.marktdaten.MarktDatenProviderImpl.getAlleDimensionenUndDescriptoren(MarktDatenProviderImpl.java:183) > at > net.enbw.etg.rcm.pfc.proxies.ServiceLocator.getAlleDimensionenUndDeskriptoren(ServiceLocator.java:187) > at > net.enbw.etg.rcm.pfc.view.navigator.Navigator$2.doInBackground(Navigator.java:181) > at > net.enbw.etg.rcm.pfc.view.navigator.Navigator$2.doInBackground(Navigator.java:1) > at javax.swing.SwingWorker$1.call(SwingWorker.java:278) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at javax.swing.SwingWorker.run(SwingWorker.java:317) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) > at java.lang.Thread.run(Thread.java:619) > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: Searching for: annotated with @Converter in package: > org/apache/camel/spring/converter using classloader: > org.eclipse.core.runtime.internal.adaptor.ContextFinder > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: It's not an osgi bundle classloader > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil getResources > AM FEINSTEN: Getting resource URL for package: > org/apache/camel/spring/converter with classloader: > org.eclipse.core.runtime.internal.adaptor.contextfin...@983d95 > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: No URLs returned by classloader > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: Searching for: annotated with @Converter in package: > org/apache/camel/spring/converter using classloader: > org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find > AM FEINSTEN: It's not an osgi bundle classloader > 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil getResources > AM FEINSTEN: Getting resource URL for package: > org/apache/camel/spring/converter with classloader: > org.eclipse.osgi.internal.baseadaptor.defaultclassloa...@cec0c5 > --- END TRACE LOG --- -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.