> If there is a problem with finding and calling e.g. > `java/awt/GraphicsEnvironment` in `AWTIsHeadless`, the env' Exception remains > set and it is not cleared. Later, that manifests as: > > Fatal error reported via JNI: Could not allocate library name > > Which is misleading. The code path is perhaps rare in a normal JDK usage, but > it has been complicating our users' bug reports in the GraalVM/native-image > ecosystem for quite some time. > > Instead of failing later indicating that the user has incorrectly configured > JNI, it bails out very soon with a message that seems as if a jstring could > not have been allocated. It sends users on wild goose chases where it appears > `JNU_NewStringPlatform` calls failed, e.g. > > * https://github.com/oracle/graal/issues/9138 > * https://github.com/oracle/graal/issues/8475 > * https://github.com/oracle/graal/issues/9300 > * https://github.com/quarkusio/quarkus/issues/31596 > * https://github.com/graalvm/mandrel/issues/292 > * https://github.com/Karm/mandrel-integration-tests/issues/262 > > This commit fixes the error reporting in the AWTIsHeadless. > > Furthermore, when AOT compiled, there is little sense for having a JAVA_HOME, > yet some parts of AWT code look for it to search fonts. In such case, an > empty directory structure is enough to accommodate it, e.g. > > /tmp/JAVA_HOME/ > /tmp/JAVA_HOME/conf > /tmp/JAVA_HOME/conf/fonts > /tmp/JAVA_HOME/lib > > The exception is somewhat cryptic for users again, merely stating: > > Exception in thread "main" java.io.IOException: Problem reading font data. > at java.desktop@22.0.1/java.awt.Font.createFont0(Font.java:1205) > at java.desktop@22.0.1/java.awt.Font.createFont(Font.java:1076) > at imageio.Main.loadFonts(Main.java:139 > > Adding the cause there makes it clearer, i.e. that JAVA_HOME might be missing: > > Exception in thread "main" java.io.IOException: Problem reading font data. > at java.desktop@23-internal/java.awt.Font.createFont0(Font.java:1206) > at java.desktop@23-internal/java.awt.Font.createFont(Font.java:1076) > at imageio.Main.loadFonts(Main.java:139) > at imageio.Main.paintRectangles(Main.java:97) > at imageio.Main.main(Main.java:195) > at > java.base@23-internal/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH) > Caused by: java.lang.Error: java.home property not set > at > java.desktop@23-internal/sun.awt.FontConfiguration.findFontConfigFile(FontConfiguration.java:180) > at java.desktop@23-internal/sun.awt.FontConf...
Karm Michal Babacek has updated the pull request incrementally with one additional commit since the last revision: Amends test description ------------- Changes: - all: https://git.openjdk.org/jdk/pull/20169/files - new: https://git.openjdk.org/jdk/pull/20169/files/c206f936..bba9a3ca Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=20169&range=08 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=20169&range=07-08 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/20169.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/20169/head:pull/20169 PR: https://git.openjdk.org/jdk/pull/20169