Closed javier-godoy closed 1 month ago
Add resource-config.json, reflect-config.json and ForeignRegistrationFeature.java
Run apt-get update && apt-get install -y fontconfig libfreetype6 fonts-dejavu
Compile with -H:+ForeignAPISupport -H:+AddAllCharsets --features=com.flowingcode.ForeignRegistrationFeature
Run the application with -Djava.home=
something (as a workaround for https://mail.openjdk.org/pipermail/client-libs-dev/2022-December/009431.html)
However, it keeps failing with the following error, with seems to be a limitation of the native image:
com.oracle.svm.core.jdk.UnsupportedFeatureError: Defining hidden classes at runtime is not supported.
at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:121) ~[na:na]
at java.base@22.0.1/java.lang.ClassLoader.defineClass0(ClassLoader.java:323) ~[native-image:na]
at java.base@22.0.1/java.lang.System$2.defineClass(System.java:2402) ~[na:na]
at java.base@22.0.1/java.lang.invoke.MethodHandles$Lookup$ClassDefiner.defineClass(MethodHandles.java:2492) ~[na:na]
at java.base@22.0.1/java.lang.invoke.MethodHandles$Lookup$ClassDefiner.defineClassAsLookup(MethodHandles.java:2471) ~[na:na]
at java.base@22.0.1/java.lang.invoke.MethodHandles$Lookup.defineHiddenClass(MethodHandles.java:2137) ~[native-image:na]
at java.base@22.0.1/jdk.internal.foreign.abi.BindingSpecializer.specializeUpcall(BindingSpecializer.java:184) ~[na:na]
at java.base@22.0.1/jdk.internal.foreign.abi.UpcallLinker.makeFactory(UpcallLinker.java:75) ~[na:na]
at java.base@22.0.1/jdk.internal.foreign.abi.SharedUtils.arrangeUpcallHelper(SharedUtils.java:198) ~[na:na]
at java.base@22.0.1/jdk.internal.foreign.abi.x64.sysv.CallArranger.arrangeUpcall(CallArranger.java:147) ~[na:na]
at java.base@22.0.1/jdk.internal.foreign.abi.x64.sysv.SysVx64Linker.arrangeUpcall(SysVx64Linker.java:67) ~[native-image:na]
at java.base@22.0.1/jdk.internal.foreign.abi.AbstractLinker.lambda$upcallStub$1(AbstractLinker.java:133) ~[native-image:na]
at java.base@22.0.1/jdk.internal.foreign.abi.SoftReferenceCache$Node.get(SoftReferenceCache.java:49) ~[na:na]
at java.base@22.0.1/jdk.internal.foreign.abi.SoftReferenceCache.get(SoftReferenceCache.java:38) ~[na:na]
at java.base@22.0.1/jdk.internal.foreign.abi.AbstractLinker.upcallStub(AbstractLinker.java:132) ~[native-image:na]
at java.desktop@22.0.1/sun.font.HBShaper.<clinit>(HBShaper.java:218) ~[native-image:na]
at java.desktop@22.0.1/sun.font.SunLayoutEngine.layout(SunLayoutEngine.java:185) ~[na:na]
at java.desktop@22.0.1/sun.font.GlyphLayout$EngineRecord.layout(GlyphLayout.java:669) ~[na:na]
at java.desktop@22.0.1/sun.font.GlyphLayout.layout(GlyphLayout.java:459) ~[na:na]
at java.desktop@22.0.1/sun.font.ExtendedTextSourceLabel.createGV(ExtendedTextSourceLabel.java:333) ~[na:na]
at java.desktop@22.0.1/sun.font.ExtendedTextSourceLabel.getGV(ExtendedTextSourceLabel.java:319) ~[na:na]
at java.desktop@22.0.1/sun.font.ExtendedTextSourceLabel.createLogicalBounds(ExtendedTextSourceLabel.java:229) ~[na:na]
at java.desktop@22.0.1/sun.font.ExtendedTextSourceLabel.getAdvance(ExtendedTextSourceLabel.java:138) ~[na:na]
at java.desktop@22.0.1/java.awt.font.TextLine.init(TextLine.java:281) ~[na:na]
at java.desktop@22.0.1/java.awt.font.TextLine.<init>(TextLine.java:129) ~[na:na]
at java.desktop@22.0.1/java.awt.font.TextLine.fastCreateTextLine(TextLine.java:978) ~[na:na]
at java.desktop@22.0.1/java.awt.font.TextLayout.fastInit(TextLayout.java:611) ~[na:na]
at java.desktop@22.0.1/java.awt.font.TextLayout.<init>(TextLayout.java:532) ~[na:na]
at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:301) ~[na:na]
at org.apache.poi.ss.util.SheetUtil.getColumnWidth(SheetUtil.java:273) ~[na:na]
at org.apache.poi.ss.util.SheetUtil.getColumnWidth(SheetUtil.java:257) ~[na:na]
at org.apache.poi.xssf.usermodel.XSSFSheet.autoSizeColumn(XSSFSheet.java:497) ~[native-image:5.2.3]
at org.apache.poi.xssf.usermodel.XSSFSheet.autoSizeColumn(XSSFSheet.java:479) ~[native-image:5.2.3]
(For avoidance of doubt, the code in this comment is licensed under the same license and attribution as the add-on)
Maybe this is related with the autosizing feature, we could disable it for the demos.
Add-on require some reflection hints for native compilation. It also requires
-H:+AddAllCharsets