Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-54018

NoClassDefFoundError: Lhudson/tools/JDKInstaller when JDK Tools plugin is uninstalled

    • Icon: Task Task
    • Resolution: Not A Defect
    • Icon: Critical Critical
    • jdk-tool-plugin
    • None

      Exception on UI after manually uploading plugins

      Uploaded Plugins 

      * structs.hpi

      * ssh-credentials.hpi

      * ssh-credentials.hpi

      * ssh-slaves.hpi

       

      A problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins. The users list might be also useful in understanding what has happened.

      Stack trace

      org.apache.commons.jelly.JellyTagException: jar:file:/var/cache/jenkins/war/WEB-INF/lib/jenkins-core-2.138.1.jar!/hudson/slaves/DumbSlave/configure-entries.jelly:61:73: <st:include> Lhudson/tools/JDKInstaller; at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:745) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:289) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.OtherwiseTag.doTag(OtherwiseTag.java:41) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.WhenTag.doTag(WhenTag.java:46) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.ChooseTag.doTag(ChooseTag.java:38) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53) at org.kohsuke.stapler.jelly.JellyRequestDispatcher.forward(JellyRequestDispatcher.java:55) at hudson.slaves.NodeDescriptor.handleNewNodePage(NodeDescriptor.java:91) at hudson.model.ComputerSet.doCreateItem(ComputerSet.java:280) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343) at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:77) at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:184) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:129) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:734) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:864) at org.kohsuke.stapler.MetaClass$3.doDispatch(MetaClass.java:209) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:734) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:864) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:668) at org.kohsuke.stapler.Stapler.service(Stapler.java:238) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:99) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:531) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) at winstone.BoundedExecutorService.lambda$scheduleNext$0(BoundedExecutorService.java:80) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NoClassDefFoundError: Lhudson/tools/JDKInstaller; at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Class.java:2583) at java.lang.Class.getDeclaredFields(Class.java:1916) at org.kohsuke.stapler.lang.KlassNavigator$1.getDeclaredFields(KlassNavigator.java:198) at org.kohsuke.stapler.lang.KlassNavigator$1.getDeclaredFields(KlassNavigator.java:141) at org.kohsuke.stapler.lang.Klass.getDeclaredFields(Klass.java:68) at org.kohsuke.stapler.lang.Klass.getFields(Klass.java:79) at org.kohsuke.stapler.KlassDescriptor.<init>(KlassDescriptor.java:26) at org.kohsuke.stapler.MetaClass.buildDispatchers(MetaClass.java:105) at org.kohsuke.stapler.MetaClass.<init>(MetaClass.java:93) at org.kohsuke.stapler.WebApp.getMetaClass(WebApp.java:204) at org.kohsuke.stapler.jelly.groovy.GroovyFacet.createRequestDispatcher(GroovyFacet.java:109) at org.kohsuke.stapler.RequestImpl.getView(RequestImpl.java:257) at org.kohsuke.stapler.RequestImpl.getView(RequestImpl.java:252) at hudson.model.Descriptor.getHelpFile(Descriptor.java:750) at hudson.model.Descriptor.getHelpFile(Descriptor.java:732) at hudson.plugins.sshslaves.SSHLauncher$DescriptorImpl.getHelpFile(SSHLauncher.java:1549) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258) at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104) at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83) at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57) at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51) at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80) at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74) at org.apache.commons.jelly.tags.core.CoreTagLibrary$3.run(CoreTagLibrary.java:134) at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) ... 160 more Caused by: java.lang.ClassNotFoundException: hudson.tools.JDKInstaller at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1374) at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1327) at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1080) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 198 more Caused: javax.servlet.ServletException at org.kohsuke.stapler.jelly.JellyRequestDispatcher.forward(JellyRequestDispatcher.java:60) at hudson.slaves.NodeDescriptor.handleNewNodePage(NodeDescriptor.java:91) at hudson.model.ComputerSet.doCreateItem(ComputerSet.java:280) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343) at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:77) at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:184) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:129) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:734) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:864) at org.kohsuke.stapler.MetaClass$3.doDispatch(MetaClass.java:209) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:734) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:864) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:668) at org.kohsuke.stapler.Stapler.service(Stapler.java:238) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:99) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:531) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) at winstone.BoundedExecutorService.lambda$scheduleNext$0(BoundedExecutorService.java:80) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

          [JENKINS-54018] NoClassDefFoundError: Lhudson/tools/JDKInstaller when JDK Tools plugin is uninstalled

          Owen Mehegan added a comment -

          I have seen this issue in a situation where JDK Tools plugin was removed from a master where it had been installed and used. 

          Owen Mehegan added a comment - I have seen this issue in a situation where JDK Tools plugin was removed from a master where it had been installed and used. 

          Devin Nusbaum added a comment - - edited

          The JDK Tool plugin should be installed by default when upgrading past Jenkins 2.112, and plugins with an older core dependency than 2.112 should depend on it automatically. Jenkins should show a warning if you try to uninstall the plugin warning that things will break.

          The question here is why the JDK tool plugin is not present on your instance. There was one reported case where someone was manually modifying some files that broke the upgrade detection, see JENKINS-50272, but other than that I'm not sure what could be happening. CC mramonleon who is another maintainer of the plugin in case he has seen this before.

          Devin Nusbaum added a comment - - edited The JDK Tool plugin should be installed by default when upgrading past Jenkins 2.112, and plugins with an older core dependency than 2.112 should depend on it automatically. Jenkins should show a warning if you try to uninstall the plugin warning that things will break. The question here is why the JDK tool plugin is not present on your instance. There was one reported case where someone was manually modifying some files that broke the upgrade detection, see JENKINS-50272 , but other than that I'm not sure what could be happening. CC mramonleon who is another maintainer of the plugin in case he has seen this before.

          Ramon Leon added a comment -

          Tests I've done:

          • Download Jenkins 2.150.1
          • Don't install any single plugin during startup wizard
          • Install via Available tab the SSH-Slaves plugin
          • (the jdk-tool gets installed)
          • The dropdown shows correctly
          • Download Jenkins 2.150.1
          • Don't install any single plugin during startup wizard
          • Install via Available tab the Docker pipeline plugin
          • (the jdk-tool gets installed, among a bunch of other plugins)
          • (the SSH-Slaved doesn't get installed as Docker pipeline doesn't depend on it)
          • The dropdown shows correctly, but not with the desired option, as the SSH slaved

          Maybe all the installations are being done manually (instead of via the Available tab) so the dependency tree is not honored and the detached jdk-tool plugin is not being installed.

          Is this the case? ianw gokulendra

           

          Ramon Leon added a comment - Tests I've done: Download Jenkins 2.150.1 Don't install any single plugin during startup wizard Install via Available tab the  SSH-Slaves plugin (the jdk-tool gets installed) The dropdown shows correctly Download Jenkins 2.150.1 Don't install any single plugin during startup wizard Install via Available tab the Docker pipeline plugin (the jdk-tool gets installed, among a bunch of other plugins) (the SSH-Slaved doesn't get installed as Docker pipeline doesn't depend on it) The dropdown shows correctly, but not with the desired option, as the SSH slaved Maybe all the installations are being done manually (instead of via the Available tab) so the dependency tree is not honored and the detached  jdk-tool  plugin is not being installed. Is this the case? ianw gokulendra  

          Ian Williams added a comment - - edited

          mramonleon is correct in that the GUI was not used. We use a slightly customized variant of the install_plugins.sh tool packaged with Jenkinsci/docker (the customized is for us to also pull internally built and stored plugins).

          We only specify the top-level plugin as inputs and expect the tool to pull the ( latest ) dependencies down as well.

          eg. plugins.txt (this is a subset of our plugins):

          active-directory:2.12 | Active Directory plugin
          credentials-binding:1.18 | Credentials Binding Plugin
          cloudbees-folder:6.7 | Folders Plugin
          view-job-filters:2.1.1 | View Job Filters
          windows-slaves:1.4 | Windows Slaves Plugin
          role-strategy:2.10 | Role-based Authorization Strategy
          workflow-aggregator:2.6 | Pipeline
          pipeline-maven:3.6.7 | Pipeline Maven Integration Plugin
          pipeline-utility-steps:2.3.0 | Pipeline Utility Steps
          docker-plugin:1.1.6 | Docker plugin
          kubernetes:1.14.8 | Kubernetes plugin
          blueocean:1.13.2 | Blue Ocean
          job-dsl:1.72 | Job DSL

           installs all the dependencies as well, over 100 plugins, but we only need to manage the 12 listed above.

          For some reason, the dependency is not being picked I guess. Surprised it works through the GUI.

          https://plugins.jenkins.io/windows-slaves  says JDK Tool v.1.0 (implied), but it would seem this is (required).

           

          Ian Williams added a comment - - edited mramonleon is correct in that the GUI was not used. We use a slightly customized variant of the install_plugins.sh tool packaged with Jenkinsci/docker (the customized is for us to also pull internally built and stored plugins). We only specify the top-level plugin as inputs and expect the tool to pull the ( latest ) dependencies down as well. eg. plugins.txt (this is a subset of our plugins): active-directory:2.12 | Active Directory plugin credentials-binding:1.18 | Credentials Binding Plugin cloudbees-folder:6.7 | Folders Plugin view-job-filters:2.1.1 | View Job Filters windows-slaves:1.4 | Windows Slaves Plugin role-strategy:2.10 | Role-based Authorization Strategy workflow-aggregator:2.6 | Pipeline pipeline-maven:3.6.7 | Pipeline Maven Integration Plugin pipeline-utility-steps:2.3.0 | Pipeline Utility Steps docker-plugin:1.1.6 | Docker plugin kubernetes:1.14.8 | Kubernetes plugin blueocean:1.13.2 | Blue Ocean job-dsl:1.72 | Job DSL  installs all the dependencies as well, over 100 plugins, but we only need to manage the 12 listed above. For some reason, the dependency is not being picked I guess. Surprised it works through the GUI. https://plugins.jenkins.io/windows-slaves   says JDK Tool v.1.0 (implied) , but it would seem this is (required).  

          Ian Williams added a comment -

          dnusbaum,

          The JDK Tool plugin should be installed by default when upgrading past Jenkins 2.112

          How does should be installed by default become must be installed?

          Is this documented anywhere? Any other required plugins? Does this also hold true for or break the docker instance?

          I now understand JENKINS-22367 split the functionality from the core. jdk-tool clearly depends on jdk-tool, but is not explicitly stated. I suppose other plugins may have the same scope issue.

          Ian Williams added a comment - dnusbaum , The JDK Tool plugin should be installed by default when upgrading past Jenkins 2.112 How does should be installed by default become must be installed ? Is this documented anywhere? Any other required plugins? Does this also hold true for or break the docker instance? I now understand JENKINS-22367  split the functionality from the core. jdk-tool clearly depends on jdk-tool, but is not explicitly stated. I suppose other plugins may have the same scope issue.

          Ramon Leon added a comment -

          ianw if you upgrade your instance passing this version, the jdk-tool plugin is effectively installed, for sure. It's not installed if you started with a post 2.112 version. If you install a plugin via UI that depends on a < 2.112 Jenkins version, then the jdk-tool is automatically installed as well.

          This script doesn't handle the detached plugins, it's made by the core code itself, so you have to install it by yourself because you have a plugin that effectively depends on it. You have more context here: https://github.com/jenkinsci/docker/issues/698

          As you can see, it's not straightforward to resolve the problem. But now, you know the behavior and how to solve your issues.

          Are you fine if I close this ticket? we already have the other ticket to go forward to try to improve the situation.

           

          Thank you.

          Ramon Leon added a comment - ianw if you upgrade your instance passing this version, the jdk-tool plugin is effectively installed, for sure. It's not installed if you started with a post 2.112 version. If you install a plugin via UI that depends on a < 2.112 Jenkins version, then the jdk-tool is automatically installed as well. This script doesn't handle the detached plugins, it's made by the core code itself, so you have to install it by yourself because you have a plugin that effectively depends on it. You have more context here:  https://github.com/jenkinsci/docker/issues/698 As you can see, it's not straightforward to resolve the problem. But now, you know the behavior and how to solve your issues. Are you fine if I close this ticket? we already have the other ticket to go forward to try to improve the situation.   Thank you.

          Devin Nusbaum added a comment -

          How does should be installed by default become must be installed?

          I should have been more clear - Jenkins should install the plugin for you without you needing to do anything. All plugins that have been split from Jenkins' own codebase have this behavior. These plugins being an implied dependency on the plugin site means that the dependent plugin depends on a core version older than the version in which the dependency was split, so when the dependent plugin is installed on a version of Jenkins core after the split happened, the dependency is automatically and implicitly installed. As Ramon pointed out, it looks like the issue here is that install-plugins.sh needs to be modified to handle detached plugins correctly, but you can jdk-tool to your script explicitly to work around the issue.

          Devin Nusbaum added a comment - How does  should be installed by default  become  must be installed ? I should have been more clear - Jenkins should install the plugin for you without you needing to do anything. All plugins that have been split from Jenkins' own codebase have this behavior. These plugins being an implied dependency on the plugin site means that the dependent plugin depends on a core version older than the version in which the dependency was split, so when the dependent plugin is installed on a version of Jenkins core after the split happened, the dependency is automatically and implicitly installed. As Ramon pointed out, it looks like the issue here is that install-plugins.sh needs to be modified to handle detached plugins correctly, but you can jdk-tool to your script explicitly to work around the issue.

          Ian Williams added a comment -

           I was not clear on the difference between implied and optional. I understand the dependencies cannot be fixed retroactively. I guess this is an unfortunate outcome.

          Before closing this I suppose a mitigating fix would be to have documented in the install_plugins.sh and elsewhere, the list of plugins which where split off that at considered mandatory. The best approach is maybe a reference to a wiki page which contains the list.

          It would seem this requirement was also merely implied in the LTS Upgrade Notes as I did not read this. can the upgrade guide get a note added as well?

          A user should not have to dig through JIRA tickets or PRs to figure this out.

          Ian Williams added a comment -  I was not clear on the difference between implied and optional. I understand the dependencies cannot be fixed retroactively. I guess this is an unfortunate outcome. Before closing this I suppose a mitigating fix would be to have documented in the install_plugins.sh and elsewhere, the list of plugins which where split off that at considered mandatory. The best approach is maybe a reference to a wiki page which contains the list. It would seem this requirement was also merely implied in the LTS Upgrade Notes as I did not read this. can the upgrade guide get a note added as well? A user should not have to dig through JIRA tickets or PRs to figure this out.

          Ramon Leon added a comment -

          I agree we need to document it better. I will create a new task to do that, with a different title, description and priority. I will close this task as the reason for its creation is clarified.

          For the record, the list of plugins detached and the version when it happened is: https://github.com/jenkinsci/jenkins/blob/a78312ea0f4ba28f8bc81220c6d7c0dfa72a67df/core/src/main/resources/jenkins/split-plugins.txt

          Feel free to participate or follow the new task.

          Thank you.

          Ramon Leon added a comment - I agree we need to document it better. I will create a new task to do that, with a different title, description and priority. I will close this task as the reason for its creation is clarified. For the record, the list of plugins detached and the version when it happened is:  https://github.com/jenkinsci/jenkins/blob/a78312ea0f4ba28f8bc81220c6d7c0dfa72a67df/core/src/main/resources/jenkins/split-plugins.txt Feel free to participate or follow the new task. Thank you.

          Ramon Leon added a comment -

          Closed and created a follow-up task to improve documentation: INFRA-2063

          Ramon Leon added a comment - Closed and created a follow-up task to improve documentation: INFRA-2063

            mramonleon Ramon Leon
            gokulendra Gokulendra Panda
            Votes:
            2 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated:
              Resolved: