-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
19
-
None
-
OS: Windows
GraalVM 22.3.0 with jdk 19 from:
https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.0
-
generic
-
windows
Create a native image of a Swing application using GraalVM and run it with -Dsun.awt.fontconfig=fontconfig.properties.src java property. java.lang.Error: java.home property not set error is thrown.
For more details see GraalVM issue " graal 22.2.0 ... java awt java.home property not set ... #4875 ":
https://github.com/oracle/graal/issues/4875
Steps to reproduce:
- Download graal 22.3.0 jdk 19 for Windows from GraalVM Community Edition 22.3.0 page:
https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.0
- Install native-image
> graalvm-ce-java19-22.3.0\bin\gu.cmd install native-image
- Create and compile SwingSample.java sample
```
import java.awt.*;
import javax.swing.*;
public class SwingSample {
public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(() -> {
JFrame frame = new JFrame("Hello World");
JButton button = new JButton("Hello");
button.addActionListener(e -> {
System.out.printf("Hello, World!%n");
});
JPanel panel = new JPanel(new FlowLayout());
panel.add(button);
frame.add(panel);
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
});
}
}
```
- Run native-image-agent to generate configuration files
> graalvm-ce-java19-22.3.0\bin\java.cmd -agentlib:native-image-agent=config-output-dir=conf-dir SwingSample
- Copy graalvm-ce-java19-22.3.0\lib\fontconfig.properties.src file to the sample dir
- Generate native image with configuration files and -Djava.awt.headless=false , -Dsun.awt.fontconfig=fontconfig.properties.src java properties
> call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64"
> graalvm-ce-java19-22.3.0\bin\native-image.cmd --no-fallback -Djava.awt.headless=false -Dsun.awt.fontconfig=fontconfig.properties.src -H:ResourceConfigurationFiles=conf-dir/resource-config.json -H:SerializationConfigurationFiles=conf-dir/serialization-config.json -H:ReflectionConfigurationFiles=conf-dir/reflect-config.json -H:JNIConfigurationFiles=conf-dir/jni-config.json SwingSample
- Run the native image with -Dsun.awt.fontconfig=fontconfig.properties.src java property.
> swingsample.exe -Dsun.awt.fontconfig=fontconfig.properties.src
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.desktop@19.0.1/java.awt.EventQueue.invokeAndWait(EventQueue.java:1371)
at java.desktop@19.0.1/java.awt.EventQueue.invokeAndWait(EventQueue.java:1346)
at java.desktop@19.0.1/javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1480)
at SwingSample.main(SwingSample.java:7)
Caused by: java.lang.Error: java.home property not set
at java.desktop@19.0.1/sun.awt.FontConfiguration.findFontConfigFile(FontConfiguration.java:180)
at java.desktop@19.0.1/sun.awt.FontConfiguration.<init>(FontConfiguration.java:97)
at java.desktop@19.0.1/sun.awt.windows.WFontConfiguration.<init>(WFontConfiguration.java:41)
For more details see GraalVM issue " graal 22.2.0 ... java awt java.home property not set ... #4875 ":
https://github.com/oracle/graal/issues/4875
Steps to reproduce:
- Download graal 22.3.0 jdk 19 for Windows from GraalVM Community Edition 22.3.0 page:
https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.0
- Install native-image
> graalvm-ce-java19-22.3.0\bin\gu.cmd install native-image
- Create and compile SwingSample.java sample
```
import java.awt.*;
import javax.swing.*;
public class SwingSample {
public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(() -> {
JFrame frame = new JFrame("Hello World");
JButton button = new JButton("Hello");
button.addActionListener(e -> {
System.out.printf("Hello, World!%n");
});
JPanel panel = new JPanel(new FlowLayout());
panel.add(button);
frame.add(panel);
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
});
}
}
```
- Run native-image-agent to generate configuration files
> graalvm-ce-java19-22.3.0\bin\java.cmd -agentlib:native-image-agent=config-output-dir=conf-dir SwingSample
- Copy graalvm-ce-java19-22.3.0\lib\fontconfig.properties.src file to the sample dir
- Generate native image with configuration files and -Djava.awt.headless=false , -Dsun.awt.fontconfig=fontconfig.properties.src java properties
> call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64"
> graalvm-ce-java19-22.3.0\bin\native-image.cmd --no-fallback -Djava.awt.headless=false -Dsun.awt.fontconfig=fontconfig.properties.src -H:ResourceConfigurationFiles=conf-dir/resource-config.json -H:SerializationConfigurationFiles=conf-dir/serialization-config.json -H:ReflectionConfigurationFiles=conf-dir/reflect-config.json -H:JNIConfigurationFiles=conf-dir/jni-config.json SwingSample
- Run the native image with -Dsun.awt.fontconfig=fontconfig.properties.src java property.
> swingsample.exe -Dsun.awt.fontconfig=fontconfig.properties.src
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.desktop@19.0.1/java.awt.EventQueue.invokeAndWait(EventQueue.java:1371)
at java.desktop@19.0.1/java.awt.EventQueue.invokeAndWait(EventQueue.java:1346)
at java.desktop@19.0.1/javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1480)
at SwingSample.main(SwingSample.java:7)
Caused by: java.lang.Error: java.home property not set
at java.desktop@19.0.1/sun.awt.FontConfiguration.findFontConfigFile(FontConfiguration.java:180)
at java.desktop@19.0.1/sun.awt.FontConfiguration.<init>(FontConfiguration.java:97)
at java.desktop@19.0.1/sun.awt.windows.WFontConfiguration.<init>(WFontConfiguration.java:41)
- links to
-
Review openjdk/jdk/11559