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.