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

Warnings trend chart does not appear; duplicate classes in echarts-api.jar and echarts-build-trends-2.0.0.jar in ECharts API Plugin

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • echarts-api-plugin
    • None

      On the web page of a branch of a multibranch project, the warnings trend chart does not render. Instead, there is a placeholder with a progress ring and the text "loading". The developer tools in the Web browser show HTTP status 500 from a POST /jenkins/$stapler/bound/6d08ec1b-ebf8-4765-ad4e-b89a4089ea71/getBuildTrendModel request, and the Jenkins log shows various exceptions, depending on plugin and JVM versions and perhaps other things:

      • java.lang.NoClassDefFoundError: edu/hm/hafner/echarts/LineSeries
      • java.lang.LinkageError: edu.hm.hafner.echarts.LineSeries
      • java.lang.LinkageError: A duplicate class definition for edu/hm/hafner/echarts/JacksonFacade is found
      • java.lang.LinkageError: loader (instance of hudson/ClassicPluginStrategy$AntClassLoader2): attempted duplicate class definition for name: "edu/hm/hafner/echarts/JacksonFacade"

      The classes edu.hm.hafner.echarts.LineSeries and edu.hm.hafner.echarts.JacksonFacade are defined in both plugins/echarts-api/WEB-INF/lib/echarts-api.jar and plugins/echarts-api/WEB-INF/lib/echarts-build-trends-2.0.0.jar. Those jar files are included in plugins/echarts-api.jpi (ECharts API Plugin 5.0.1-1). This seems to be a bug in that plugin, then.

      $ unzip -l plugins/echarts-api/WEB-INF/lib/echarts-build-trends-2.0.0.jar
      Archive:  plugins/echarts-api/WEB-INF/lib/echarts-build-trends-2.0.0.jar
        Length      Date    Time    Name
      ---------  ---------- -----   ----
            221  2020-05-13 01:12   META-INF/MANIFEST.MF
              0  2020-05-13 01:12   META-INF/
              0  2020-05-13 01:12   edu/
              0  2020-05-13 01:12   edu/hm/
              0  2020-05-13 01:12   edu/hm/hafner/
              0  2020-05-13 01:12   edu/hm/hafner/echarts/
              0  2020-05-13 01:12   META-INF/maven/
              0  2020-05-13 01:12   META-INF/maven/edu.hm.hafner/
              0  2020-05-13 01:12   META-INF/maven/edu.hm.hafner/echarts-build-trends/
           1287  2020-05-13 01:12   edu/hm/hafner/echarts/ChartModelConfiguration.class
           2914  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries.class
          13228  2020-05-13 01:12   edu/hm/hafner/echarts/SeriesBuilder.class
           4002  2020-05-13 01:12   edu/hm/hafner/echarts/LinesDataSet.class
           2313  2020-05-13 01:12   edu/hm/hafner/echarts/Palette.class
           2168  2020-05-13 01:12   edu/hm/hafner/echarts/ResultTime.class
            976  2020-05-13 01:12   edu/hm/hafner/echarts/BuildResult.class
           2743  2020-05-13 01:12   edu/hm/hafner/echarts/LinesChartModel.class
           1247  2020-05-13 01:12   edu/hm/hafner/echarts/ChartModelConfiguration$AxisType.class
           3454  2020-05-13 01:12   edu/hm/hafner/echarts/PercentagePieChart.class
            283  2020-05-13 01:12   edu/hm/hafner/echarts/package-info.class
           1490  2020-05-13 01:12   edu/hm/hafner/echarts/PieData.class
           1689  2020-05-13 01:12   edu/hm/hafner/echarts/PieChartModel.class
           1917  2020-05-13 01:12   edu/hm/hafner/echarts/LocalDateLabel.class
           2111  2020-05-13 01:12   edu/hm/hafner/echarts/Build.class
           1073  2020-05-13 01:12   edu/hm/hafner/echarts/JacksonFacade.class
            579  2020-05-13 01:12   edu/hm/hafner/echarts/AreaStyle.class
            485  2020-05-13 01:12   edu/hm/hafner/echarts/ItemStyle.class
           1176  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries$StackedMode.class
           1159  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries$FilledMode.class
           1496  2020-05-13 01:12   edu/hm/hafner/echarts/TimeFacade.class
           4969  2020-05-13 01:12   META-INF/maven/edu.hm.hafner/echarts-build-trends/pom.xml
             68  2020-05-13 01:12   META-INF/maven/edu.hm.hafner/echarts-build-trends/pom.properties
      ---------                     -------
          53048                     32 files
      
      $ unzip -l plugins/echarts-api/WEB-INF/lib/echarts-api.jar
      Archive:  plugins/echarts-api/WEB-INF/lib/echarts-api.jar
        Length      Date    Time    Name
      ---------  ---------- -----   ----
              0  2021-03-03 18:04   META-INF/
            808  2021-03-03 18:04   META-INF/MANIFEST.MF
              0  2021-03-03 18:04   edu/
              0  2021-03-03 18:04   edu/hm/
              0  2021-03-03 18:04   edu/hm/hafner/
              0  2021-03-03 18:04   edu/hm/hafner/echarts/
              0  2021-03-03 18:04   io/
              0  2021-03-03 18:04   io/jenkins/
              0  2021-03-03 18:04   io/jenkins/plugins/
              0  2021-03-03 18:04   io/jenkins/plugins/echarts/
              0  2021-03-03 18:04   charts/
           1287  2020-05-13 01:12   edu/hm/hafner/echarts/ChartModelConfiguration.class
           2914  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries.class
          13228  2020-05-13 01:12   edu/hm/hafner/echarts/SeriesBuilder.class
           4002  2020-05-13 01:12   edu/hm/hafner/echarts/LinesDataSet.class
           2313  2020-05-13 01:12   edu/hm/hafner/echarts/Palette.class
           2168  2020-05-13 01:12   edu/hm/hafner/echarts/ResultTime.class
            976  2020-05-13 01:12   edu/hm/hafner/echarts/BuildResult.class
           2743  2020-05-13 01:12   edu/hm/hafner/echarts/LinesChartModel.class
           1247  2020-05-13 01:12   edu/hm/hafner/echarts/ChartModelConfiguration$AxisType.class
           3454  2020-05-13 01:12   edu/hm/hafner/echarts/PercentagePieChart.class
            283  2020-05-13 01:12   edu/hm/hafner/echarts/package-info.class
           1490  2020-05-13 01:12   edu/hm/hafner/echarts/PieData.class
           1689  2020-05-13 01:12   edu/hm/hafner/echarts/PieChartModel.class
           1917  2020-05-13 01:12   edu/hm/hafner/echarts/LocalDateLabel.class
           2111  2020-05-13 01:12   edu/hm/hafner/echarts/Build.class
           1073  2020-05-13 01:12   edu/hm/hafner/echarts/JacksonFacade.class
            579  2020-05-13 01:12   edu/hm/hafner/echarts/AreaStyle.class
            485  2020-05-13 01:12   edu/hm/hafner/echarts/ItemStyle.class
           1176  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries$StackedMode.class
           1159  2020-05-13 01:12   edu/hm/hafner/echarts/LineSeries$FilledMode.class
           1496  2020-05-13 01:12   edu/hm/hafner/echarts/TimeFacade.class
            877  2021-03-03 18:04   io/jenkins/plugins/echarts-common.jelly
            863  2021-03-03 18:04   io/jenkins/plugins/echarts.jelly
           3815  2021-03-03 18:04   io/jenkins/plugins/echarts/BuildActionIterator.class
           3078  2021-03-03 18:04   io/jenkins/plugins/echarts/AsyncTrendJobAction.class
           2209  2021-03-03 18:04   io/jenkins/plugins/echarts/BuildActionIterator$ActionSelector.class
            307  2021-03-03 18:04   io/jenkins/plugins/echarts/AsyncTrendChart.class
            877  2021-03-03 18:04   io/jenkins/plugins/echarts-simple.jelly
              0  2021-03-03 18:04   charts/taglib
           1485  2021-03-03 18:04   charts/trend-chart.jelly
           1476  2021-03-03 18:04   charts/pie-chart.jelly
           1373  2021-03-03 18:04   charts/progress-chart.jelly
              0  2021-03-03 18:04   META-INF/maven/
              0  2021-03-03 18:04   META-INF/maven/io.jenkins.plugins/
              0  2021-03-03 18:04   META-INF/maven/io.jenkins.plugins/echarts-api/
           5608  2021-03-03 18:04   META-INF/maven/io.jenkins.plugins/echarts-api/pom.xml
            116  2021-03-03 18:04   META-INF/maven/io.jenkins.plugins/echarts-api/pom.properties
      ---------                     -------
          70682                     48 files
      

          [JENKINS-65261] Warnings trend chart does not appear; duplicate classes in echarts-api.jar and echarts-build-trends-2.0.0.jar in ECharts API Plugin

          Kalle Niemitalo created issue -

          io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184) seems to be here: https://github.com/jenkinsci/warnings-ng-plugin/blob/16468bc099227b0c17ddbab5b22e83066a807052/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/JobAction.java#L181-L185

          However, I don't see which Jenkins plugin is supposed to define edu.hm.hafner.echarts.JacksonFacade.

          Kalle Niemitalo added a comment - io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184) seems to be here: https://github.com/jenkinsci/warnings-ng-plugin/blob/16468bc099227b0c17ddbab5b22e83066a807052/plugin/src/main/java/io/jenkins/plugins/analysis/core/model/JobAction.java#L181-L185 However, I don't see which Jenkins plugin is supposed to define edu.hm.hafner.echarts.JacksonFacade.

          In https://updates.jenkins.io/download/plugins/warnings-ng/8.10.1/warnings-ng.hpi, META-INF/MANIFEST.MF has a Plugin-Dependencies field that mentions echarts-api:5.0.1-1. https://updates.jenkins.io/download/plugins/echarts-api/5.0.1-1/echarts-api.hpi contains WEB-INF/lib/echarts-build-trends-2.0.0.jar, which contains edu/hm/hafner/echarts/JacksonFacade.class (which was apparently compiled from https://github.com/uhafner/echarts-build-trends/blob/7c8917f9c186426f153bc5fdcb72896dcdcff714/src/main/java/edu/hm/hafner/echarts/JacksonFacade.java). Why does Jenkins not use that, then?

          Kalle Niemitalo added a comment - In https://updates.jenkins.io/download/plugins/warnings-ng/8.10.1/warnings-ng.hpi , META-INF/MANIFEST.MF has a Plugin-Dependencies field that mentions echarts-api:5.0.1-1. https://updates.jenkins.io/download/plugins/echarts-api/5.0.1-1/echarts-api.hpi contains WEB-INF/lib/echarts-build-trends-2.0.0.jar, which contains edu/hm/hafner/echarts/JacksonFacade.class (which was apparently compiled from https://github.com/uhafner/echarts-build-trends/blob/7c8917f9c186426f153bc5fdcb72896dcdcff714/src/main/java/edu/hm/hafner/echarts/JacksonFacade.java ). Why does Jenkins not use that, then?

          Kalle Niemitalo added a comment - - edited

          I upgraded the Jira plugin from 3.2 to 3.2.1 and restarted Jenkins, and now the warnings trend chart is working again. I don't see how the Jira plugin could have caused the problem, though; it doesn't seem to have any dependency on echarts.

          I'll resolve this as unreproduceable, and reopen later if the problem recurs.

          Kalle Niemitalo added a comment - - edited I upgraded the Jira plugin from 3.2 to 3.2.1 and restarted Jenkins, and now the warnings trend chart is working again. I don't see how the Jira plugin could have caused the problem, though; it doesn't seem to have any dependency on echarts. I'll resolve this as unreproduceable, and reopen later if the problem recurs.
          Kalle Niemitalo made changes -
          Resolution New: Cannot Reproduce [ 5 ]
          Status Original: Open [ 1 ] New: Resolved [ 5 ]

          Now I'm getting a similar NoClassDefFoundError for a different class, edu.hm.hafner.echarts.LineSeries:

          huhtikuuta 01, 2021 4:46:54 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall
          
          call to /jenkins/$stapler/bound/02a838ae-0264-490f-9e71-f8b83da48722/getBuildTrendModel failed
          java.lang.NoClassDefFoundError: edu/hm/hafner/echarts/LineSeries
          	at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createSeries(SeverityTrendChart.java:70)
          	at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createChartFromDataSet(SeverityTrendChart.java:60)
          	at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.create(SeverityTrendChart.java:29)
          	at io.jenkins.plugins.analysis.core.model.JobAction.createChartModel(JobAction.java:192)
          	at io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184)
          	at java.lang.invoke.VirtualHandle.invokeExact_thunkArchetype_L(VirtualHandle.java:130)
          	at java.lang.invoke.AsTypeHandle.invokeExact_thunkArchetype_X(AsTypeHandle.java:49)
          	at java.lang.invoke.InvokeGenericHandle.invokeExact_thunkArchetype_X(InvokeGenericHandle.java:88)
          	at java.lang.invoke.SpreadHandle.invokeExact_thunkArchetype_X(SpreadHandle.java:100)
          	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:485)
          	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
          	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
          	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
          	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
          	at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637)
          	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)
          	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694)
          	at org.kohsuke.stapler.Stapler.service(Stapler.java:201)
          	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
          	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791)
          	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
          	at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91)
          	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
          	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92)
          	at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
          	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
          	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
          	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
          	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
          	at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62)
          	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97)
          	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109)
          	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36)
          	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
          	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601)
          	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
          	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
          	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
          	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
          	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
          	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
          	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
          	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350)
          	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
          	at org.eclipse.jetty.server.Server.handle(Server.java:516)
          	at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
          	at org.eclipse.jetty.server.HttpChannel$$Lambda$96/000000000000000000.dispatch(Unknown Source)
          	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
          	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
          	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279)
          	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
          	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
          	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
          	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
          	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882)
          	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036)
          	at java.lang.Thread.run(Thread.java:823)
          

          Script Console however recognizes edu.hm.hafner.echarts.LineSeries just fine.

          Kalle Niemitalo added a comment - Now I'm getting a similar NoClassDefFoundError for a different class, edu.hm.hafner.echarts.LineSeries: huhtikuuta 01, 2021 4:46:54 IP. WARNING org.kohsuke.stapler.HttpResponseRenderer$Default handleJavaScriptProxyMethodCall call to /jenkins/$stapler/bound/02a838ae-0264-490f-9e71-f8b83da48722/getBuildTrendModel failed java.lang.NoClassDefFoundError: edu/hm/hafner/echarts/LineSeries at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createSeries(SeverityTrendChart.java:70) at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.createChartFromDataSet(SeverityTrendChart.java:60) at io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.create(SeverityTrendChart.java:29) at io.jenkins.plugins.analysis.core.model.JobAction.createChartModel(JobAction.java:192) at io.jenkins.plugins.analysis.core.model.JobAction.getBuildTrendModel(JobAction.java:184) at java.lang.invoke.VirtualHandle.invokeExact_thunkArchetype_L(VirtualHandle.java:130) at java.lang.invoke.AsTypeHandle.invokeExact_thunkArchetype_X(AsTypeHandle.java:49) at java.lang.invoke.InvokeGenericHandle.invokeExact_thunkArchetype_X(InvokeGenericHandle.java:88) at java.lang.invoke.SpreadHandle.invokeExact_thunkArchetype_X(SpreadHandle.java:100) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:485) at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145) at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:637) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:457) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:834) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:694) at org.kohsuke.stapler.Stapler.service(Stapler.java:201) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at com.atlassian.bitbucket.jenkins.internal.applink.oauth.serviceprovider.auth.OAuth1aRequestFilter.doFilter(OAuth1aRequestFilter.java:91) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:92) at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101) at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:92) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:62) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:97) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:109) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:168) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:51) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) at org.eclipse.jetty.server.HttpChannel$$Lambda$96/000000000000000000.dispatch(Unknown Source) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) at java.lang.Thread.run(Thread.java:823) Script Console however recognizes edu.hm.hafner.echarts.LineSeries just fine.

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader() in Script Console:

          Result: AntClassLoader[C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\accessors-smart-1.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\antlr4-runtime-4.7.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\asm-5.0.4.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\cglib-2.2.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\commons-beanutils-1.9.3.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\commons-digester3-3.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\eclipse-collections-9.2.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\eclipse-collections-api-9.2.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\gson-2.8.5.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\j2html-1.4.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\jcommander-1.48.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\json-smart-2.3.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\jsoup-1.13.1.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\pmd-core-6.32.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\pmd-java-6.32.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\warnings-ng.jar]
          

          This list of jar files does not include "echarts-build-trends-2.0.0.jar", nor anything else from "C:\Program Files (x86)\Jenkins\plugins\echarts-api\WEB-INF\lib".

          Kalle Niemitalo added a comment - The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader() in Script Console: Result: AntClassLoader[C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\accessors-smart-1.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\antlr4-runtime-4.7.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\asm-5.0.4.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\cglib-2.2.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\commons-beanutils-1.9.3.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\commons-digester3-3.2.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\eclipse-collections-9.2.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\eclipse-collections-api-9.2.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\gson-2.8.5.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\j2html-1.4.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\jcommander-1.48.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\json-smart-2.3.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\jsoup-1.13.1.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\pmd-core-6.32.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\pmd-java-6.32.0.jar;C:\Program Files (x86)\Jenkins\plugins\warnings-ng\WEB-INF\lib\warnings-ng.jar] This list of jar files does not include "echarts-build-trends-2.0.0.jar", nor anything else from "C:\Program Files (x86)\Jenkins\plugins\echarts-api\WEB-INF\lib".

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().getParent() in Script Console:

          Result: hudson.ClassicPluginStrategy$DependencyClassLoader@b6adfb4a
          

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().getParent().getTransitiveDependencies() in Script Console:

          Result: [Plugin:plugin-util-api, Plugin:analysis-model-api, Plugin:font-awesome-api, Plugin:jquery3-api, Plugin:popper-api, Plugin:bootstrap4-api, Plugin:structs, Plugin:trilead-api, Plugin:workflow-step-api, Plugin:scm-api, Plugin:workflow-api, Plugin:script-security, Plugin:workflow-support, Plugin:display-url-api, Plugin:checks-api, Plugin:snakeyaml-api, Plugin:jackson2-api, Plugin:data-tables-api, Plugin:echarts-api, Plugin:workflow-scm-step, Plugin:bouncycastle-api, Plugin:command-launcher, Plugin:jdk-tool, Plugin:ace-editor, Plugin:workflow-cps, Plugin:workflow-job, Plugin:configuration-as-code, Plugin:credentials, Plugin:cloudbees-folder, Plugin:branch-api, Plugin:workflow-multibranch, Plugin:forensics-api, Plugin:antisamy-markup-formatter, Plugin:apache-httpcomponents-client-4-api, Plugin:junit, Plugin:matrix-project, Plugin:token-macro]
          

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().loadClass("io.jenkins.plugins.analysis.core.charts.SeverityTrendChart") in Script Console:

          Result: class io.jenkins.plugins.analysis.core.charts.SeverityTrendChart
          

          The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().loadClass("edu.hm.hafner.echarts.LineSeries") in Script Console:

          Result: class edu.hm.hafner.echarts.LineSeries
          

          But the trend chart still does not appear, and I get more of those exceptions in the log.

          Kalle Niemitalo added a comment - The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().getParent() in Script Console: Result: hudson.ClassicPluginStrategy$DependencyClassLoader@b6adfb4a The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().getParent().getTransitiveDependencies() in Script Console: Result: [Plugin:plugin-util-api, Plugin:analysis-model-api, Plugin:font-awesome-api, Plugin:jquery3-api, Plugin:popper-api, Plugin:bootstrap4-api, Plugin:structs, Plugin:trilead-api, Plugin:workflow-step-api, Plugin:scm-api, Plugin:workflow-api, Plugin:script-security, Plugin:workflow-support, Plugin:display-url-api, Plugin:checks-api, Plugin:snakeyaml-api, Plugin:jackson2-api, Plugin:data-tables-api, Plugin:echarts-api, Plugin:workflow-scm-step, Plugin:bouncycastle-api, Plugin:command-launcher, Plugin:jdk-tool, Plugin:ace-editor, Plugin:workflow-cps, Plugin:workflow-job, Plugin:configuration-as-code, Plugin:credentials, Plugin:cloudbees-folder, Plugin:branch-api, Plugin:workflow-multibranch, Plugin:forensics-api, Plugin:antisamy-markup-formatter, Plugin:apache-httpcomponents-client-4-api, Plugin:junit, Plugin:matrix-project, Plugin:token-macro] The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().loadClass("io.jenkins.plugins.analysis.core.charts.SeverityTrendChart") in Script Console: Result: class io.jenkins.plugins.analysis.core.charts.SeverityTrendChart The output from io.jenkins.plugins.analysis.core.charts.SeverityTrendChart.class.getClassLoader().loadClass("edu.hm.hafner.echarts.LineSeries") in Script Console: Result: class edu.hm.hafner.echarts.LineSeries But the trend chart still does not appear, and I get more of those exceptions in the log.

          Ulli Hafner added a comment -

          Hmm, I never had such a problem. The echarts classes are from another plugin, those are not part of a dependency lib and not part of the class loader.

          Ulli Hafner added a comment - Hmm, I never had such a problem. The echarts classes are from another plugin, those are not part of a dependency lib and not part of the class loader.

          Kalle Niemitalo added a comment - - edited

          I wonder if this could be some kind of JVM bug or incompatibility. The Jenkins instance is on AdoptOpenJDK 8 OpenJ9 (rather than Hotspot).

          Kalle Niemitalo added a comment - - edited I wonder if this could be some kind of JVM bug or incompatibility. The Jenkins instance is on AdoptOpenJDK 8 OpenJ9 (rather than Hotspot).

            drulli Ulli Hafner
            kon Kalle Niemitalo
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: