I was able to work around the issue by adding the following to my plugin. It's 
dirty, but it at least proves my suspicion: 

FilteringClassLoader filter = 
getServices().get(ClassLoaderRegistry).gradleApiClassLoader.parent
filter.allowPackage('org.apache.tools.zip')
filter.allowPackage('org.apache.commons.io')


-- John


On Monday, April 28, 2014 at 8:08 PM, John Engelman wrote:

> Hmm, that seems to be the problem, but I can't seem to figure out a way 
> around this. What I'm trying to do is extend the Jar/Zip tasks in Gradle to 
> copy the contents of Jar/Zip files using JarInputStream/JarOutputStreams 
> instead of decompressing the files to a temporary directory copying them and 
> then decompressing. I am doing this by overriding the 'createCopyAction' 
> method to return a custom class that implements CopyAction. However, I cannot 
> use the protected methods in the class else I run into the cast exceptions 
> below. 
> 
> Is there a better way that I could do this or am I just going to be limited 
> at this point? 
> 
> -- John
> 
> 
> On Monday, April 28, 2014 at 6:14 PM, John Engelman wrote:
> 
> > As I was getting this stack trace, it occurred to me what is probably 
> > happening. I think I was inadvertently using a class from 
> > org.gradle.internal and that's where the error is coming from: 
> > 
> > Caused by: java.lang.ClassCastException: 
> > org.apache.tools.zip.ZipOutputStream cannot be cast to 
> > org.apache.tools.zip.ZipOutputStream
> > at 
> > com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction$1.execute(ShadowCopyAction.groovy)
> > at org.gradle.internal.IoActions.withResource(IoActions.java:74)
> > at org.gradle.internal.IoActions$withResource.call(Unknown Source)
> > at 
> > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
> > at 
> > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
> > at 
> > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
> > at 
> > com.github.jengelman.gradle.plugins.shadow.tasks.ShadowCopyAction.execute(ShadowCopyAction.groovy:49)
> > at 
> > org.gradle.api.internal.file.copy.NormalizingCopyActionDecorator.execute(NormalizingCopyActionDecorator.java:52)
> > at 
> > org.gradle.api.internal.file.copy.DuplicateHandlingCopyActionDecorator.execute(DuplicateHandlingCopyActionDecorator.java:42)
> > at 
> > org.gradle.api.internal.file.copy.CopyActionExecuter.execute(CopyActionExecuter.java:38)
> > at org.gradle.api.tasks.AbstractCopyTask.copy(AbstractCopyTask.java:65)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > at 
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> > at 
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > at java.lang.reflect.Method.invoke(Method.java:606)
> > at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
> > at 
> > org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:219)
> > at 
> > org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:212)
> > at 
> > org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:201)
> > at 
> > org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:533)
> > at 
> > org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:516)
> > at 
> > org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
> > at 
> > org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
> > ... 47 more
> > 
> > 
> > -- John
> > 
> > 
> > On Monday, April 28, 2014 at 5:51 PM, Adam Murdoch [via Gradle] wrote:
> > 
> > > 
> > > On 29 Apr 2014, at 12:40 am, John Engelman <[hidden email] 
> > > (/user/SendEmail.jtp?type=node&node=5712626&i=0)> wrote:
> > > > Hey everyone - 
> > > > I'm trying to write a plugin that uses the Apache ZipOutputStream class 
> > > > in it and I can't seem to get it to work. The class appears to be 
> > > > available via 'gradleApi()', but when I publish the plugin and install 
> > > > it to a project, I end up with a 
> > > > NoClassDefFoundException for ZipOutputStream.
> > > > Then I explicitly added the org.apache.ant:ant dependency to the plugin 
> > > > and republished and now I get a ClassCastException:
> > > > 
> > > > Caused by: java.lang.ClassCastException: 
> > > > org.apache.tools.zip.ZipOutputStream cannot be cast to 
> > > > org.apache.tools.zip.ZipOutputStream.
> > > 
> > > Have you got a stack trace for this failure?
> > > 
> > > --
> > > Adam Murdoch
> > > Gradle Co-founder
> > > http://www.gradle.org
> > > VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
> > > http://www.gradleware.com
> > > 
> > > Join us for Gradle Summit 2014, June 12th and 13th in Santa Clara, CA: 
> > > http://www.gradlesummit.com 
> > > 
> > > 
> > > If you reply to this email, your message will be added to the discussion 
> > > below: 
> > > http://gradle.1045684.n5.nabble.com/Dealing-with-ClassLoader-issues-in-Gradle-Plugins-tp5712621p5712626.html
> > >  
> > > To start a new topic under gradle-dev, email 
> > > ml-node+s1045684n1436218...@n5.nabble.com 
> > > (mailto:ml-node+s1045684n1436218...@n5.nabble.com) 
> > > To unsubscribe from gradle-dev, click here 
> > > (http://gradle.1045684.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=1436218&code=am9obi5yLmVuZ2VsbWFuQGdtYWlsLmNvbXwxNDM2MjE4fDIyMTUyNjEzNQ==).
> > > NAML 
> > > (http://gradle.1045684.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml)
> > >  
> > 
> 





--
View this message in context: 
http://gradle.1045684.n5.nabble.com/Dealing-with-ClassLoader-issues-in-Gradle-Plugins-tp5712621p5712629.html
Sent from the gradle-dev mailing list archive at Nabble.com.

Reply via email to