Charts not working after upgrade from core 2.7.10 to 2.7.12
-
It seems that after upgrading Mango from core 2.7.10 to 2.7.12 the pop-up charts stopped working on the Graphical Views and the Watch list points, and also in the Reports. Apparently this also occurred months ago when upgrading to 2.7.10.
To fix this, I found "Re: Data Point Details No Graph - Unlicensed Module - How to Register License?" and saw that I should use the older version of jfreechart instead of the new version:
sudo mv -v /opt/mango/lib/jfreechart-1.0.19.jar ~/MangoBackup/jfreechart-1.0.19.jar-from-2.7.12 sudo cp -pv /opt/mango.2.7.10/lib/jfreechart-1.0.14.jar /opt/mango/lib/
Is this occurring for everyone, or just Linux users? Will this be fixed before the Mango 2.8 release?
Thanks.
-
Hi Pedro,
Can you share the error you got? Usually when people had this problem, it was because somehow an overridden Range.class file was in their Mango/classes or Mango/overrides/classes directory, nestled into org/jfree/.
-
I have fixed the problem, but I did save an error message that was generated when I moused over a SimplePoint chart icon in the Graphical View. It starts with:
016-09-28 16:58:16,547 ERROR (org.apache.taglibs.log.LoggerTag.doStartTag:97) - java.lang.NoSuchMethodError: org.jfree.data.Range.combineIgnoringNaN(Lorg/jfree/data/Range;Lorg/jfree/data/Range;)Lorg/jfree/data/Range; at org.jfree.data.time.TimeSeriesCollection.getRangeBounds(TimeSeriesCollection.java:742) at org.jfree.data.general.DatasetUtilities.findRangeBounds(DatasetUtilities.java:898) at org.jfree.chart.renderer.xy.AbstractXYItemRenderer.findRangeBounds(AbstractXYItemRenderer.java:785) at org.jfree.chart.renderer.xy.AbstractXYItemRenderer.findRangeBounds(AbstractXYItemRenderer.java:739) at org.jfree.chart.plot.XYPlot.getDataRange(XYPlot.java:4471) at org.jfree.chart.axis.NumberAxis.autoAdjustRange(NumberAxis.java:433) at org.jfree.chart.axis.NumberAxis.configure(NumberAxis.java:415) at org.jfree.chart.plot.XYPlot.configureRangeAxes(XYPlot.java:1257) at org.jfree.chart.plot.XYPlot.datasetChanged(XYPlot.java:4540) at org.jfree.chart.plot.XYPlot.setDataset(XYPlot.java:1396) at com.serotonin.m2m2.util.chart.ImageChartUtils.writeChart(ImageChartUtils.java:110) at com.serotonin.m2m2.util.chart.ImageChartUtils.getChartData(ImageChartUtils.java:63) at com.serotonin.m2m2.util.chart.ImageChartUtils.getChartData(ImageChartUtils.java:55) at com.serotonin.m2m2.web.servlet.ImageChartServlet.getImageData(ImageChartServlet.java:229) at com.serotonin.m2m2.web.servlet.ImageChartServlet.doGet(ImageChartServlet.java:69) at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) at com.serotonin.m2m2.web.filter.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:63) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83) at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:364) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:499) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Thread.java:745)
I can send the full message via other means so I don't have to edit it for security purposes. Below are the files under the overrides folder:
$ find /opt/mango/overrides/ -type f /opt/mango/overrides/web/favicon.ico /opt/mango/overrides/web/MangoDailyScheduled.sh /opt/mango/overrides/web/images/favicon.ico /opt/mango/overrides/web/images/logo.png /opt/mango/overrides/web/images/Tides_icon.png /opt/mango/overrides/web/WEB-INF/tags/page.tag /opt/mango/overrides/web/WEB-INF/tags/html5/footer.tag /opt/mango/overrides/web/WEB-INF/tags/html5/footer.tag-orig /opt/mango/overrides/web/WEB-INF/tags/mobile-page.tag /opt/mango/overrides/properties/keystore.jks /opt/mango/overrides/properties/i18n.properties /opt/mango/overrides/properties/env.properties-derby~ /opt/mango/overrides/properties/env.properties-mysql~ /opt/mango/overrides/properties/env.properties /opt/mango/overrides/properties/env.properties.13Jan2015 /opt/mango/overrides/classes/log4j.xml
Thanks.
-
It is probably in Mango/classes/org/jfree/data/
find /path/to/Mango -name '*Range.class'
-
$ find /opt/mango -name '*Range.class' | xargs ls -l -rw-r--r-- 1 mango mango 4323 Jun 24 2014 /opt/mango/classes/org/jfree/data/Range.class
-
@phildunlap, are you implying there is something I should do with the
Range.class
file? Since I'm now using/opt/mango.2.7.10/lib/jfreechart-1.0.14.jar
instead ofjfreechart-1.0.19.jar
, will I need to move around thejfreechart
file again if I mess withRange.class
? -
Correct. To make the 1.0.19 jar work you would want to delete that Range.class file, switch the jars back so that .19 is on the classpath and .14 isn't, and then start Mango again.
-
Since it's a linux system, can I delete the Range.class file and swap the jfreechart files while Mango is running, and then restart Mango later when a restart will be less disruptive, or must I do the file manipulation while Mango is shut down?
-
You may get truncated class or class not found exceptions after you've manipulated the files without restarting. Neither is fatal. But, you don't really save yourself a lot of effort by running three bash commands sooner than whenever you're going to restart.