ClassNotFoundException in OSGi environment ------------------------------------------
Key: CAMEL-4171 URL: https://issues.apache.org/jira/browse/CAMEL-4171 Project: Camel Issue Type: Bug Components: camel-core, camel-groovy Affects Versions: 2.7.2 Reporter: Sergey Zhemzhitsky The problem is in the following method of the GroovyLanguage @SuppressWarnings("unchecked") protected Class<Script> parseExpression(String expression) { return new GroovyClassLoader().parseClass(expression); } It uses the default constructor to create GroovyClassLoader, which uses Thread context classloader, which may not be equal to the classloader of the bundle where the camel context is defined. Caused by: java.lang.NoClassDefFoundError: groovy/lang/Script at java.lang.ClassLoader.defineClass1(Native Method)[:1.6.0_24] at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)[:1.6.0_24] at java.lang.ClassLoader.defineClass(ClassLoader.java:616)[:1.6.0_24] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)[:1.6.0_24] at groovy.lang.GroovyClassLoader.access$300(GroovyClassLoader.java:55) at groovy.lang.GroovyClassLoader$ClassCollector.createClass(GroovyClassLoader.java:519) at groovy.lang.GroovyClassLoader$ClassCollector.onClassNode(GroovyClassLoader.java:536) at groovy.lang.GroovyClassLoader$ClassCollector.call(GroovyClassLoader.java:540) at org.codehaus.groovy.control.CompilationUnit$11.call(CompilationUnit.java:747) at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:932) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:509) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:487) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:464) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:306) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:267) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:214) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:224) at org.apache.camel.language.groovy.GroovyLanguage.parseExpression(GroovyLanguage.java:44) at org.apache.camel.language.groovy.GroovyLanguage.createExpression(GroovyLanguage.java:38) at org.apache.camel.language.groovy.GroovyLanguage.createExpression(GroovyLanguage.java:27) at org.apache.camel.component.language.LanguageProducer.process(LanguageProducer.java:41)[68:org.apache.camel.camel-core:2.6.0.fuse-01-09] at org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50)[68:org.apache.camel.camel-core:2.6.0.fuse-01-09] ... 92 more Caused by: java.lang.ClassNotFoundException: groovy.lang.Script at java.net.URLClassLoader$1.run(URLClassLoader.java:202)[:1.6.0_24] at java.security.AccessController.doPrivileged(Native Method)[:1.6.0_24] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)[:1.6.0_24] at java.lang.ClassLoader.loadClass(ClassLoader.java:307)[:1.6.0_24] at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:696)[134:groovy-all:1.7.5] at groovy.lang.GroovyClassLoader$InnerLoader.loadClass(GroovyClassLoader.java:449) at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:793)[134:groovy-all:1.7.5] at java.lang.ClassLoader.loadClass(ClassLoader.java:248)[:1.6.0_24] ... 115 more -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira