Jenkins slave call throwing java.io.NotSerializableException on 3rd party api

27 views
Skip to first unread message

shruthi ganesh

unread,
Jun 16, 2015, 12:30:38 AM6/16/15
to jenkins...@googlegroups.com
I am writing an jenkins SCM plugin and using a 3rd party Com4j.jar. While calling the workspace.act(new CheckoutTask()) I am getting Serialization exception on Com4j.Wrapper class. How can I fix this?

My code:

public class TestWorkspaceCheckout extends SCM implements Serializable{
    @Override
    public boolean checkout(AbstractBuild build, Launcher launcher, FilePath workspace, BuildListener listener, File changelogFile)
            throws IOException, InterruptedException
    {
        String status = workspace.act(new CheckoutTask(con,version,checkoutConfiguration,listener));
    }
    private static class CheckoutTask implements FileCallable<String> {
        private static final long serialVersionUID = 1L;
        private final EASEECom4jConnector con;
        private final IEASEEVersion version;
        private final IEASEECheckoutConfiguration checkoutConfiguration;
        private final BuildListener listener;
        public CheckoutTask(EASEECom4jConnector con,IEASEEVersion version,IEASEECheckoutConfiguration checkoutConfiguration,BuildListener listener) {

            this.con=con;
            this.version=version;
            this.checkoutConfiguration=checkoutConfiguration;
            this.listener=listener;
        }
        public void checkRoles(RoleChecker arg0) throws SecurityException {
        }
        public String invoke(File arg0, VirtualChannel arg1) throws IOException, InterruptedException {
            // TODO Auto-generated method stub
            try {
                con.checkout(version, checkoutConfiguration);
            } catch (EASEEException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return "Checkout Failed";
            }
            return "Checkout Completed";
        }
    }
}

  

Error Log:

ileCallableWrapper@8394ff
    at hudson.FilePath.act(FilePath.java:987)
    at hudson.FilePath.act(FilePath.java:969)
    at com.bosch.ci.eASEE.TestWorkspaceCheckout.checkout(TestWorkspaceCheckout.java:157)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1276)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:610)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:532)
    at hudson.model.Run.execute(Run.java:1744)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:374)
Caused by: java.io.IOException: Unable to serialize hudson.FilePath$FileCallableWrapper@8394ff
    at hudson.remoting.UserRequest.serialize(UserRequest.java:169)
    at hudson.remoting.UserRequest.<init>(UserRequest.java:63)
    at hudson.remoting.Channel.call(Channel.java:751)
    at hudson.FilePath.act(FilePath.java:980)
    ... 10 more
Caused by: java.io.NotSerializableException: com4j.Wrapper
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
    at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
    at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.writeObject(Unknown Source)
    at hudson.remoting.UserRequest._serialize(UserRequest.java:158)
    at hudson.remoting.UserRequest.serialize(UserRequest.java:167)
    ... 13 more
Reply all
Reply to author
Forward
0 new messages