OpenJdk 11 java.desktop InvocationTargetException from FileFormat.getJavaDimension

0 votes
asked Jun 25, 2019 in Bug by Sjoerd Talsma

I encountered the exception when running JavaDoc with UMLDoclet 2.0.4 / PlantUML 1.2019.06 in a docker image with OpenJDK 11.0.2.9.

UMLDoclet bug report with stacktrace: https://github.com/talsma-ict/umldoclet/issues/184

Relevant part of the stacktrace:

[ERROR] javadoc: error - fatal error encountered: java.lang.InternalError: java.lang.reflect.InvocationTargetException
[ERROR] javadoc: error - Please file a bug against the javadoc tool via the Java bug reporting page
[ERROR] (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com)
[ERROR] for duplicates. Include error messages and the following diagnostic in your report. Thank you.
[ERROR] java.lang.InternalError: java.lang.reflect.InvocationTargetException
[ERROR] 	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
[ERROR] 	at java.base/java.security.AccessController.doPrivileged(Native Method)
[ERROR] 	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
[ERROR] 	at java.desktop/sun.font.SunFontManager.getInstance(SunFontManager.java:247)
[ERROR] 	at java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:265)
[ERROR] 	at java.desktop/sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:864)
[ERROR] 	at net.sourceforge.plantuml.FileFormat.getJavaDimension(FileFormat.java:112)
[ERROR] 	at net.sourceforge.plantuml.FileFormat.access$000(FileFormat.java:52)
[ERROR] 	at net.sourceforge.plantuml.FileFormat$1.calculateDimension(FileFormat.java:104)
[ERROR] 	at net.sourceforge.plantuml.creole.AtomText.calculateDimension(AtomText.java:191)
[ERROR] 	at net.sourceforge.plantuml.creole.Sea.add(Sea.java:51)
[ERROR] 	at net.sourceforge.plantuml.creole.SheetBlock1.initMap(SheetBlock1.java:110)
[ERROR] 	at net.sourceforge.plantuml.creole.SheetBlock1.calculateDimension(SheetBlock1.java:152)
[ERROR] 	at net.sourceforge.plantuml.creole.SheetBlock2.calculateDimension(SheetBlock2.java:70)
[ERROR] 	at net.sourceforge.plantuml.graphic.TextBlockVertical2.calculateDimension(TextBlockVertical2.java:70)
[ERROR] 	at net.sourceforge.plantuml.svek.GeneralImageBuilder.printGroup(GeneralImageBuilder.java:508)
[ERROR] 	at net.sourceforge.plantuml.svek.GeneralImageBuilder.printGroups(GeneralImageBuilder.java:493)
[ERROR] 	at net.sourceforge.plantuml.svek.GeneralImageBuilder.buildImage(GeneralImageBuilder.java:143)
[ERROR] 	at net.sourceforge.plantuml.svek.CucaDiagramFileMakerSvek.createFileInternal(CucaDiagramFileMakerSvek.java:100)
[ERROR] 	at net.sourceforge.plantuml.svek.CucaDiagramFileMakerSvek.createFile(CucaDiagramFileMakerSvek.java:66)
[ERROR] 	at net.sourceforge.plantuml.cucadiagram.CucaDiagram.exportDiagramInternal(CucaDiagram.java:374)
[ERROR] 	at net.sourceforge.plantuml.classdiagram.ClassDiagram.exportDiagramInternal(ClassDiagram.java:189)
[ERROR] 	at net.sourceforge.plantuml.UmlDiagram.exportDiagramNow(UmlDiagram.java:197)
[ERROR] 	at net.sourceforge.plantuml.AbstractPSystem.exportDiagram(AbstractPSystem.java:130)
[ERROR] 	at net.sourceforge.plantuml.SourceStringReader.outputImage(SourceStringReader.java:149)
[ERROR] 	at net.sourceforge.plantuml.SourceStringReader.outputImage(SourceStringReader.java:121)
[ERROR] 	at nl.talsmasoftware.umldoclet.uml.Diagram.renderDiagramFile(Diagram.java:170)
[ERROR] 	at nl.talsmasoftware.umldoclet.uml.Diagram.render(Diagram.java:129)
[ERROR] 	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
[ERROR] 	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
[ERROR] 	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
[ERROR] 	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
[ERROR] 	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
[ERROR] 	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
[ERROR] 	at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312)
[ERROR] 	at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
[ERROR] 	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
[ERROR] 	at nl.talsmasoftware.umldoclet.UMLDoclet.run(UMLDoclet.java:88)
[ERROR] 	at jdk.javadoc/jdk.javadoc.internal.tool.Start.parseAndExecute(Start.java:582)
[ERROR] 	at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:431)
[ERROR] 	at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:344)
[ERROR] 	at jdk.javadoc/jdk.javadoc.internal.tool.Main.execute(Main.java:63)
[ERROR] 	at jdk.javadoc/jdk.javadoc.internal.tool.Main.main(Main.java:52)
[ERROR] Caused by: java.lang.reflect.InvocationTargetException
[ERROR] 	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[ERROR] 	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[ERROR] 	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[ERROR] 	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
[ERROR] 	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
[ERROR] 	... 42 more
[ERROR] Caused by: java.lang.NullPointerException
[ERROR] 	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
[ERROR] 	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
[ERROR] 	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
[ERROR] 	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
[ERROR] 	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
[ERROR] 	at java.base/java.security.AccessController.doPrivileged(Native Method)
[ERROR] 	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
[ERROR] 	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
[ERROR] 	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
[ERROR] 	... 47 more

1 Answer

0 votes
answered Jun 25, 2019 by plantuml (295,000 points)

It's difficult to answer, but it looks like a font issue somewhere.

The key message seems to be:

Caused by: java.lang.NullPointerException at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)

Maybe it's the same as https://github.com/AdoptOpenJDK/openjdk-docker/issues/75

Or maybe you can read info about X11 on http://plantuml.com/faq

commented Jun 25, 2019 by Sjoerd talsma
Thanks for this pointer; it sure looks eerily similar.

I'll try applying the workaround that is mentioned in that issue and report back here!
commented Jul 17, 2019 by Sjoerd Talsma

Unfortunately the workarounds described in the above AdoptOpenJDK issue did not resolve my build problem. Switching from the alpine image to the slim (ubuntu-based) docker image did resolve the problem though.

So I'll be closing the issue as a known-issue with AdoptOpenJDK alpine docker images.

commented Nov 25, 2019 by FJM
I had the same problem with Alpine. Solved it adding:

apk add ttf-dejavu
commented Mar 27, 2020 by anonymous
Thanks! This helped me to solve similar issue with Alpine
...