Issue
I am receiving an error message like the following in my logs (or console output):
java.lang.SecurityException: Rejected: <CLASS_NAME> at hudson.remoting.ClassFilter.check(ClassFilter.java:44) at hudson.remoting.MultiClassLoaderSerializer$Input.resolveClass(MultiClassLoaderSerializer.java:111) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620)
Environment
-
CloudBees CI (CloudBees Core) on modern cloud platforms - Managed controller
-
CloudBees CI (CloudBees Core) on modern cloud platforms - Operations Center
-
CloudBees CI (CloudBees Core) on traditional platforms - Client controller
-
CloudBees CI (CloudBees Core) on traditional platforms - Operations Center
Resolution
In new versions of Jenkins core is a security mechanism to prevent unwanted classes from being returned from node machines. There is a workaround however it will require a Jenkins restart.
-
Create a file on the Jenkins controller.
-
In the file add the following and save it (You may need to add a line specific to the class being rejected in your error):
^com[.]google[.]inject[.].* ^com[.]sun[.]jndi[.]rmi[.].* ^java[.]rmi[.].* ^org[.]apache[.]commons[.]beanutils[.].* ^org[.]apache[.]commons[.]collections[.]functors[.].* .*org[.]apache[.]xalan.* ^org[.]codehaus[.]groovy[.]runtime[.].* ^org[.]hibernate[.].* ^org[.]springframework[.](?!(\p{Alnum}+[.])*\p{Alnum}*Exception$).* ^sun[.]rmi[.].*
-
Add the following to the Jenkins
JAVA_ARGS
:
-Dhudson.remoting.ClassFilter.DEFAULTS_OVERRIDE_LOCATION=
-
After the
=
add the fully qualified path to the file created above. -
Restart the Jenkins service and the error message should be resolved.