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

        

Reply via email to