FROM oracle/graalvm-ce:20.0.0-java8
RUN gu install native-image
WORKDIR /opt/graalvm
ADD https://sourceforge.net/projects/plantuml/files/1.2020.8/plantuml.1.2020.8.jar/download /opt/graalvm/plantuml.jar
RUN native-image \
--verbose \
-J-Xmx16G -J-Xms16G -Djava.awt.headless=true \
--no-server \
--no-fallback \
--enable-all-security-services \
-H:+ReportExceptionStackTraces -H:NumberOfThreads=1 \
--initialize-at-run-time='sun.awt.X11,sun.awt.dnd' \
--initialize-at-build-time='sun.awt.X11.XToolkit' \
-H:Name=plantuml -cp plantuml.jar net.sourceforge.plantuml.Run
Unfortunately, PlantUML relies on JNI, so I guess that's a dead end…
$ plantuml
Exception in thread "main" java.lang.UnsatisfiedLinkError: sun.awt.image.BufImgSurfaceData.initRaster(Ljava/lang/Object;IIIIIILjava/awt/image/IndexColorModel;)V [symbol: Java_sun_awt_image_BufImgSurfaceData_initRaster or Java_sun_awt_image_BufImgSurfaceData_initRaster__Ljava_lang_Object_2IIIIIILjava_awt_image_IndexColorModel_2]
at com.oracle.svm.jni.access.JNINativeLinkage.getOrFindEntryPoint(JNINativeLinkage.java:145)
at com.oracle.svm.jni.JNIGeneratedMethodSupport.nativeCallAddress(JNIGeneratedMethodSupport.java:57)
at sun.awt.image.BufImgSurfaceData.initRaster(BufImgSurfaceData.java)
at sun.awt.image.BufImgSurfaceData.createDataIC(BufImgSurfaceData.java:254)
at sun.awt.image.BufImgSurfaceData.createData(BufImgSurfaceData.java:84)
at sun.awt.image.BufImgSurfaceManager.<init>(BufImgSurfaceManager.java:55)
at sun.awt.image.SurfaceManager.getManager(SurfaceManager.java:79)
at sun.java2d.SurfaceData.getPrimarySurfaceData(SurfaceData.java:273)
at sun.java2d.SunGraphicsEnvironment.createGraphics(SunGraphicsEnvironment.java:185)
at sun.java2d.HeadlessGraphicsEnvironment.createGraphics(HeadlessGraphicsEnvironment.java:89)
at java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1182)
at net.sourceforge.plantuml.FileFormat.<clinit>(FileFormat.java:91)
at com.oracle.svm.core.hub.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:350)
at com.oracle.svm.core.hub.ClassInitializationInfo.initialize(ClassInitializationInfo.java:270)
at java.lang.Class.ensureInitialized(DynamicHub.java:496)
at net.sourceforge.plantuml.Option.<init>(Option.java:95)
at net.sourceforge.plantuml.Run.main(Run.java:88)