bertramdev / asset-pipeline

The core implementation of the asset pipeline for the jvm
194 stars 92 forks source link

asset-pipeline-grails - BabelJsProcessor - java.lang.ClassNotFoundException: org.mozilla.javascript.Scriptable #214

Closed zyro23 closed 6 years ago

zyro23 commented 6 years ago

looks like the excluded rhino dependency (#160) now is needed at runtime in development (gradle(w) bootRun) for babel processing.

stacktrace with 3.0.1:

java.lang.ClassNotFoundException: org.mozilla.javascript.Scriptable
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetPublicMethods(Class.java:2902)
    at java.lang.Class.getMethods(Class.java:1615)
    at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1336)
    at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1197)
    at java.beans.Introspector.getBeanInfo(Introspector.java:426)
    at java.beans.Introspector.getBeanInfo(Introspector.java:173)
    at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:3328)
    at java.security.AccessController.doPrivileged(Native Method)
    at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3326)
    at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3303)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:289)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:331)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:277)
    at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:905)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:74)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:161)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:96)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
    at asset.pipeline.AbstractAssetFile.processedStream(AbstractAssetFile.groovy:170)

debugging that, you can see it happens on an attempt to load BabelJsProcessor (processor.newInstance(null)).

no problem during gradle(w) assetCompile / gradle(w) assemble though.

workaround is to explicitly add asset-pipeline-core alongside asset-pipeline-grails, i.e.:

runtime "com.bertramlabs.plugins:asset-pipeline-core:3.0.1"
runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.0.1"
davydotcom commented 6 years ago

Hmm not sure how we missed that... will fix!

On Fri, Jul 20, 2018, 5:26 AM zyro notifications@github.com wrote:

looks like the excluded rhino dependency (#160 https://github.com/bertramdev/asset-pipeline/issues/160) now is needed at runtime in development (gradle(w) bootRun) for babel processing.

stacktrace with 3.0.1:

java.lang.ClassNotFoundException: org.mozilla.javascript.Scriptable at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetPublicMethods(Class.java:2902) at java.lang.Class.getMethods(Class.java:1615) at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1336) at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1197) at java.beans.Introspector.getBeanInfo(Introspector.java:426) at java.beans.Introspector.getBeanInfo(Introspector.java:173) at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:3328) at java.security.AccessController.doPrivileged(Native Method) at groovy.lang.MetaClassImpl.addProperties(MetaClassImpl.java:3326) at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3303) at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:289) at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:331) at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:277) at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:905) at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:74) at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:161) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:96) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128) at asset.pipeline.AbstractAssetFile.processedStream(AbstractAssetFile.groovy:170)

debugging that, you can see it happens on an attempt to load BabelJsProcessor (processor.newInstance(null)).

- https://github.com/bertramdev/asset-pipeline/blob/master/asset-pipeline-core/src/main/groovy/asset/pipeline/AbstractAssetFile.groovy#L170

https://github.com/bertramdev/asset-pipeline/blob/master/asset-pipeline-core/src/main/groovy/asset/pipeline/processors/BabelJsProcessor.groovy#L40

https://github.com/bertramdev/asset-pipeline/blame/master/asset-pipeline-grails/build.gradle#L99

no problem during gradle(w) assetCompile / gradle(w) assemble though.

workaround is to explicitly add asset-pipeline-core alongside asset-pipeline-grails, i.e.:

runtime "com.bertramlabs.plugins:asset-pipeline-core:3.0.1" runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.0.1"

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/bertramdev/asset-pipeline/issues/214, or mute the thread https://github.com/notifications/unsubscribe-auth/AABaEjQuBtoE8h5ay012aZrmviQK7M7Bks5uIaJXgaJpZM4VXud6 .

davydotcom commented 6 years ago

Rhino isn’t needed as we use nashorn for Babel however rhino was in the imports from previous attempts... removed in 3.0.2