-
Notifications
You must be signed in to change notification settings - Fork 54
Closed
Labels
Description
Hello,
I'm using Kandy for creating graphing data using Kotlin. Occasionally, the toPNG
function throws this error:
[DefaultDispatcher-worker-5] ERROR SpecTransformBackendUtil - Internal error: NullPointerException : <no message>
java.lang.NullPointerException
at org.jetbrains.letsPlot.core.plot.base.GeomMeta.renders(GeomMeta.kt:24)
at org.jetbrains.letsPlot.core.plot.base.GeomMeta.renders(GeomMeta.kt:33)
at org.jetbrains.letsPlot.core.plot.base.GeomMeta.renders$default(GeomMeta.kt:27)
at org.jetbrains.letsPlot.core.spec.config.LayerConfig.<init>(LayerConfig.kt:74)
at org.jetbrains.letsPlot.core.spec.config.PlotConfig.createLayerConfig(PlotConfig.kt:160)
at org.jetbrains.letsPlot.core.spec.config.PlotConfig.createLayerConfigs(PlotConfig.kt:133)
at org.jetbrains.letsPlot.core.spec.config.PlotConfig.<init>(PlotConfig.kt:80)
at org.jetbrains.letsPlot.core.spec.back.PlotConfigBackend.<init>(PlotConfigBackend.kt:40)
at org.jetbrains.letsPlot.core.spec.back.SpecTransformBackendUtil.processTransformIntern2(SpecTransformBackendUtil.kt:154)
at org.jetbrains.letsPlot.core.spec.back.SpecTransformBackendUtil.processTransformIntern(SpecTransformBackendUtil.kt:136)
at org.jetbrains.letsPlot.core.spec.back.SpecTransformBackendUtil.processTransform$plot_stem(SpecTransformBackendUtil.kt:42)
at org.jetbrains.letsPlot.core.spec.back.SpecTransformBackendUtil.processTransform(SpecTransformBackendUtil.kt:22)
at org.jetbrains.letsPlot.core.util.MonolithicCommon.processRawSpecs(MonolithicCommon.kt:326)
at org.jetbrains.letsPlot.core.util.MonolithicCommon.buildSvgImagesFromRawSpecs(MonolithicCommon.kt:37)
at org.jetbrains.letsPlot.core.util.PlotSvgExportCommon.buildSvgImageFromRawSpecs(PlotSvgExportCommon.kt:35)
at org.jetbrains.letsPlot.awt.plot.PlotSvgExport.buildSvgImageFromRawSpecs(PlotSvgExport.kt:24)
at org.jetbrains.letsPlot.awt.plot.PlotSvgExport.buildSvgImageFromRawSpecs$default(PlotSvgExport.kt:19)
at org.jetbrains.letsPlot.core.plot.export.PlotImageExport.buildImageFromRawSpecs(PlotImageExport.kt:90)
at org.jetbrains.kotlinx.kandy.letsplot.export.ToBufferedImageKt.toBufferedImage(toBufferedImage.kt:28)
at org.jetbrains.kotlinx.kandy.letsplot.export.ToBufferedImageKt.toPNG(toBufferedImage.kt:99)
at org.jetbrains.kotlinx.kandy.letsplot.export.ToBufferedImageKt.toPNG$default(toBufferedImage.kt:95)
It seems to be directly a Lets-Plot bug instead of a Kandy bug, and is linked to this line of code in GeomMeta
:
@ThreadLocal
object GeomMeta {
private val renderedAesByGeom = HashMap<GeomKind, List<Aes<*>>>()
private fun renders(geomKind: GeomKind): List<Aes<*>> {
if (!renderedAesByGeom.containsKey(geomKind)) {
renderedAesByGeom[geomKind] =
renderedAesList(geomKind)
}
return renderedAesByGeom[geomKind]!! // thrown here
}