Adam Davis created KARAF-3335:
---------------------------------

             Summary: Endorsed org.apache.karaf.exception-3.0.2 jar causes 
issues with Java 8 Nashorn scripts
                 Key: KARAF-3335
                 URL: https://issues.apache.org/jira/browse/KARAF-3335
             Project: Karaf
          Issue Type: Bug
    Affects Versions: 3.0.2
            Reporter: Adam Davis


I have been trying to get our application up and running within Karaf-3.0.2, 
and have run into an issue with the exception-3.0.2 jar within the lib/endorsed 
folder.  Our application relies heavily on Nashorn scripts, and these scripts 
will no longer run.  

When executing the following code, an exception is generated and the script 
fails to execute:

h6. Nashorn Script
{code}
topic.modify(function(s) {
    s.roleList.add().userRoleKey = 1;
});
{code}
h6. Java code
_The topic variable above is an instance of ModificationContext_
{code}
class ModificationContext
{
    public <S extends DataObject> ModificationContext modify(Consumer<S> 
consumer)
    {
        ... //the contents here are unimportant, as it never actually gets this 
far
    }
}
{code}

h6. Stack Trace
{noformat}
java.lang.NoSuchMethodError: java.lang.Exception: method 
<init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V not found
        at java.lang.RuntimeException.<init>(RuntimeException.java:117)
        at 
jdk.internal.dynalink.support.TypeConverterFactory$NotCacheableConverter.<init>(TypeConverterFactory.java:379)
        at 
jdk.internal.dynalink.support.TypeConverterFactory.createConverter(TypeConverterFactory.java:370)
        at 
jdk.internal.dynalink.support.TypeConverterFactory$1$1.computeValue(TypeConverterFactory.java:120)
        at 
jdk.internal.dynalink.support.TypeConverterFactory$1$1.computeValue(TypeConverterFactory.java:116)
        at jdk.internal.dynalink.support.ClassMap.get(ClassMap.java:150)
        at 
jdk.internal.dynalink.support.TypeConverterFactory.getCacheableTypeConverter(TypeConverterFactory.java:330)
        at 
jdk.internal.dynalink.support.TypeConverterFactory.getCacheableTypeConverterNull(TypeConverterFactory.java:317)
        at 
jdk.internal.dynalink.support.TypeConverterFactory.getTypeConverterNull(TypeConverterFactory.java:323)
        at 
jdk.internal.dynalink.support.TypeConverterFactory.asType(TypeConverterFactory.java:224)
        at 
jdk.internal.dynalink.support.LinkerServicesImpl.asType(LinkerServicesImpl.java:126)
        at 
jdk.nashorn.internal.runtime.linker.NashornBeansLinker$NashornBeansLinkerServices.asType(NashornBeansLinker.java:84)
        at 
jdk.internal.dynalink.beans.SingleDynamicMethod.createConvertingInvocation(SingleDynamicMethod.java:289)
        at 
jdk.internal.dynalink.beans.SingleDynamicMethod.getInvocation(SingleDynamicMethod.java:189)
        at 
jdk.internal.dynalink.beans.SingleDynamicMethod.getInvocation(SingleDynamicMethod.java:132)
        at 
jdk.internal.dynalink.beans.DynamicMethodLinker.getGuardedInvocation(DynamicMethodLinker.java:118)
        at 
jdk.internal.dynalink.beans.BeansLinker.getGuardedInvocation(BeansLinker.java:252)
        at 
jdk.nashorn.internal.runtime.linker.NashornBeansLinker.getGuardedInvocation(NashornBeansLinker.java:67)
        at 
jdk.nashorn.internal.runtime.linker.NashornBeansLinker.getGuardedInvocation(NashornBeansLinker.java:54)
        at 
jdk.internal.dynalink.support.CompositeGuardingDynamicLinker.getGuardedInvocation(CompositeGuardingDynamicLinker.java:124)
        at 
jdk.internal.dynalink.support.LinkerServicesImpl.getGuardedInvocation(LinkerServicesImpl.java:144)
        at jdk.internal.dynalink.DynamicLinker.relink(DynamicLinker.java:232)
        at jdk.nashorn.internal.scripts.Script$\^eval\_.runScript(<eval>:1)
        at 
jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:498)
        at 
jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:206)
        at 
jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:378)
        at 
jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:546)
        at 
jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:528)
        at 
jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:524)
        at 
jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:194)
        at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233)
{noformat}

If I remove the exception jar from the endorsed folder and run the same script, 
it executes correctly



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to