hare is my project https://github.com/abamoshe/ConnectWise_portable/releases/tag/0.0.0
im running native-image -jar ConnectWise.jar --no-fallback -H:NativeLinkerOption=prefs.lib
and on runtime i get this error:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no awt in java.library.path
at com.oracle.svm.core.jdk.NativeLibrarySupport.loadLibrary(NativeLibrarySupport.java:131)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:228)
at java.lang.Runtime.loadLibrary0(Runtime.java:830)
at java.lang.Runtime.loadLibrary(Runtime.java:238)
at java.lang.System.loadLibrary(System.java:352)
at java.awt.Toolkit$3.run(Toolkit.java:1395)
at java.awt.Toolkit$3.run(Toolkit.java:1393)
at java.security.AccessController.doPrivileged(AccessController.java:83)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1392)
at java.awt.Toolkit.<clinit>(Toolkit.java:1425)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:351)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:271)
at java.awt.SystemTray.addNotify(SystemTray.java:503)
at java.awt.SystemTray.<init>(SystemTray.java:150)
at java.awt.SystemTray.initializeSystemTrayIfNeeded(SystemTray.java:522)
at java.awt.SystemTray.getSystemTray(SystemTray.java:185)
at com.aba.pconnectwise.Launcher.addTrayIcon(Launcher.java:24)
at com.aba.pconnectwise.Launcher.main(Launcher.java:19)
(the -H:NativeLinkerOption=prefs.lib is becose of https://github.com/oracle/graal/issues/2363#issuecomment-619426179
i'v also downloaded the dev version to avoid this https://github.com/oracle/graal/issues/2363#issuecomment-664512773)
@abamoshe please provide the reproduce or the instructions to reproduce this error
@abamoshe please provide the reproduce or the instructions to reproduce this error
just download the jar from hare https://github.com/abamoshe/ConnectWise_portable/releases/tag/0.0.0 and run native-image -jar ConnectWise.jar --no-fallback (but to avoid unresolved external symbol Java_java_util_prefs_WindowsPreferences error
you need to add -H:NativeLinkerOption=prefs.lib (https://github.com/oracle/graal/issues/2363#issuecomment-619426179) and then run the compiled exe
@mcraj017
the problem is basically with the tray icon hare is a simple snippet of code wat makes a simple demo tray icon
import javax.imageio.ImageIO;
import java.awt.*;
import java.net.URL;
public class TrayIconDemo {
public static void main(String[] args) throws Exception {
SystemTray tray = SystemTray.getSystemTray();
TrayIcon trayIcon = new TrayIcon(ImageIO.read(new URL("http://icons.iconarchive.com/icons/scafer31000/bubble-circle-3/16/GameCenter-icon.png")));
trayIcon.setImageAutoSize(true);
MenuItem menuExit = new MenuItem("exit");
menuExit.addActionListener(e -> {
tray.remove(trayIcon);
System.exit(0);
});
PopupMenu popupMenu = new PopupMenu();
popupMenu.add(menuExit);
trayIcon.setPopupMenu(popupMenu);
tray.add(trayIcon);
}
}
just run javac TrayIconDemo.java then native-image TrayIconDemo --no-fallback and then trayicondemo.exe
and the error
C:\Users\XXX\IdeaProjects\TrayIcon\src>trayicondemo.exe
Exception in thread "main" java.lang.UnsatisfiedLinkError: no awt in java.library.path
at com.oracle.svm.core.jdk.NativeLibrarySupport.loadLibrary(NativeLibrarySupport.java:131)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:228)
at java.lang.Runtime.loadLibrary0(Runtime.java:830)
at java.lang.Runtime.loadLibrary(Runtime.java:238)
at java.lang.System.loadLibrary(System.java:352)
at java.awt.Toolkit$3.run(Toolkit.java:1395)
at java.awt.Toolkit$3.run(Toolkit.java:1393)
at java.security.AccessController.doPrivileged(AccessController.java:83)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1392)
at java.awt.Toolkit.<clinit>(Toolkit.java:1425)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:351)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:271)
at java.awt.SystemTray.addNotify(SystemTray.java:503)
at java.awt.SystemTray.<init>(SystemTray.java:150)
at java.awt.SystemTray.initializeSystemTrayIfNeeded(SystemTray.java:522)
at java.awt.SystemTray.getSystemTray(SystemTray.java:185)
at TrayIconDemo.main(TrayIconDemo.java:7)
@abamoshe thanks for the reproducer
Having the same issue here with SystemTray.getSystemTray()
I get the same error using SXSSFWorkbook in Apache POI
java.lang.UnsatisfiedLinkError: no awt in java.library.path
at com.oracle.svm.core.jdk.NativeLibrarySupport.loadLibrary(NativeLibrarySupport.java:131) ~[?:?]
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:228) ~[?:?]
at java.lang.Runtime.loadLibrary0(Runtime.java:830) ~[?:?]
at java.lang.Runtime.loadLibrary(Runtime.java:238) ~[?:?]
at java.lang.System.loadLibrary(System.java:352) ~[?:?]
at java.awt.Toolkit$3.run(Toolkit.java:1395) ~[?:?]
at java.awt.Toolkit$3.run(Toolkit.java:1393) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:83) ~[Curate:?]
at java.awt.Toolkit.loadLibraries(Toolkit.java:1392) ~[?:?]
at java.awt.Toolkit.<clinit>(Toolkit.java:1425) ~[?:?]
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:351) ~[?:?]
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:271) ~[?:?]
at java.awt.Font.<clinit>(Font.java:261) ~[?:?]
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:351) ~[?:?]
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:271) ~[?:?]
at java.awt.font.TextLayout.singleFont(TextLayout.java:468) ~[?:?]
at java.awt.font.TextLayout.<init>(TextLayout.java:530) ~[?:?]
at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:273) ~[?:?]
at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117) ~[?:?]
at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:82) ~[?:?]
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:684) ~[?:?]
at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:705) ~[?:?]
Are there any updates on this issue? I have faced a similar problem
This should be fixed for the LINUX_AMD64 platform in the latest 20.3 build
I ran into a similar issue (see below) and just in case someone else is too on macOS: According to @vjovanov, additional work for macOS is still needed to make this work.
ERROR: java.lang.UnsatisfiedLinkError: no awt in java.library.path
org.graalvm.polyglot.PolyglotException: java.lang.UnsatisfiedLinkError: no awt in java.library.path
at com.oracle.svm.core.jdk.NativeLibrarySupport.loadLibrary(NativeLibrarySupport.java:131)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:270)
at java.lang.Runtime.loadLibrary0(Runtime.java:830)
at java.lang.Runtime.loadLibrary(Runtime.java:239)
at java.lang.System.loadLibrary(System.java:358)
at java.awt.image.ColorModel$1.run(ColorModel.java:209)
at java.awt.image.ColorModel$1.run(ColorModel.java:207)
at java.security.AccessController.doPrivileged(AccessController.java:84)
at java.awt.image.ColorModel.loadLibraries(ColorModel.java:206)
at java.awt.image.ColorModel.<clinit>(ColorModel.java:219)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:351)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:271)
at java.lang.Class.ensureInitialized(DynamicHub.java:573)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:236)
at java.lang.Class.ensureInitialized(DynamicHub.java:573)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:236)
at de.hpi.swa.trufflesqueak.util.MiscUtils.<clinit>(MiscUtils.java:41)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:351)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:271)
...
And what about Windows?
Same, as MacOS. Still the work needed now is an order of magnitude smaller than what was necessary for LINUX.
@pejovica have you tried it out on Windows?
graalvm-ce-java11-20.3.0 : has same exception on windows
OpenJDK Runtime Environment GraalVM CE 20.3.0 (build 11.0.9+10-jvmci-20.3-b06)
OpenJDK 64-Bit Server VM GraalVM CE 20.3.0 (build 11.0.9+10-jvmci-20.3-b06, mixed mode, sharing)
graalvm-ce-java11-21.0.0-dev : has same problem on windows
OpenJDK Runtime Environment GraalVM CE 21.0.0-dev (build 11.0.9+10-jvmci-20.3-b05)
OpenJDK 64-Bit Server VM GraalVM CE 21.0.0-dev (build 11.0.9+10-jvmci-20.3-b05, mixed mode, sharing)
Can confirm, same problem on Windows
OpenJDK Runtime Environment GraalVM CE 20.3.0 (build 11.0.9+10-jvmci-20.3-b06)
OpenJDK 64-Bit Server VM GraalVM CE 20.3.0 (build 11.0.9+10-jvmci-20.3-b06, mixed mode, sharing)
@vjovanov I'm still hitting this with 20.3.0 Linux AMD64 CE that was released this week. Is there a build or deploy time flag needed to link libawt.so?
FWIW in Mandrel we had to backport https://github.com/oracle/graal/commit/5d2997a9ac8cafdfc6b5c316532165839ad7d1af to 20.3 to get a similar case resolved
@zakkak interesting. Is there an equivalent of https://quay.io/repository/quarkus/ubi-quarkus-native-image for mandrel 20.3.0? If so, I'd like to test that out to see if I can get this working. I can test out a CR or the like as well.
@sherl0cks sure. It's https://quay.io/repository/quarkus/ubi-quarkus-mandrel:20.3-java11 (in Beta at the moment) :)
@zakkak brilliant. Will let you know how it goes. Thank you very much!
Unfortunately, the AWT patch didn't make it into 20.3 as it was considered dangerous for stability. To get the code that works with AWT you will have to rely on our dev builds or wait for 21.0.
Unfortunately, the AWT patch didn't make it into 20.3 as it was considered dangerous for stability. To get the code that works with AWT you will have to rely on our dev builds or wait for 21.0.
Will AWT feature be available for Windows native image and Java 8?
Java 8, most likely not. For Windows, it turns out that it is a noticeable amount of work. \CC @pejovica
pity, imho it would represent the definitive solution to the various launchers (launch4j, jar2exe, etc)
@sherl0cks sure. It's https://quay.io/repository/quarkus/ubi-quarkus-mandrel:20.3-java11 (in Beta at the moment) :)
In case anyone runs into this issue looking for AWT support, it looks like Mandrel did backport the commit, but there is still work needed to fix issues like https://github.com/quarkusio/quarkus-images/issues/114 before the mandrel images are usable. Hopefully those are resolved soon and give folks a viable path to use AWT in native.
@sherl0cks As @vjovanov pointed out, you can try AWT support today if you use a nightly 21.0.0-dev build of GraalVM. I suggest you use that and help test and improve support for AWT. It will make it a bit easier to identify bugs and try out new commits.
@fniephaus i tried the nightly 21.0.0-dev build and got the same error. Had anyone success with the nighty 21.0.0-dev build and a HelloWorld - Dialog in AWT or Swing? If yes, please share a detailed howto.
@fniephaus Would be happy to test out the 21.0.0 dev releases, but the build system I'm working with is set up for these docker images. If you are able to work with the quarkus folks to get a nightly dev build out through their container images, or if there is a comparable image that isn't through quarkus, I'll definitely give it a go. Unfortunately, I just don't have the bandwidth right now to setup a different build process.
Ive just tested the latest 21.1.0-dev build and it compiles and works correctly with basic AWT code. strangely enough this did douple my binary size so that might be something to look into if thats consistent for all programs.
Still getting the error when calling SystemTray.isSupported()
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] Exception in Preloader start method
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] Exception in thread "main" java.lang.RuntimeException: Exception in Preloader start method
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:882)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.lang.Thread.run(Thread.java:834)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:519)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at com.oracle.svm.core.windows.WindowsJavaThreads.osThreadStartRoutine(WindowsJavaThreads.java:138)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] Caused by: java.lang.UnsatisfiedLinkError: no awt in java.library.path
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at com.oracle.svm.core.jdk.NativeLibrarySupport.loadLibraryRelative(NativeLibrarySupport.java:132)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.lang.ClassLoader.loadLibrary(ClassLoader.java:275)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.lang.Runtime.loadLibrary0(Runtime.java:830)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.lang.System.loadLibrary(System.java:1871)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.awt.Toolkit$3.run(Toolkit.java:1395)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.awt.Toolkit$3.run(Toolkit.java:1393)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.security.AccessController.doPrivileged(AccessController.java:84)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.awt.Toolkit.loadLibraries(Toolkit.java:1392)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.awt.Toolkit.
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:375)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:295)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at java.awt.SystemTray.isSupported(SystemTray.java:221)
Are you running the dev build? This hasn't been pushed to prod yet.
Op zo 27 dec. 2020 10:13 schreef javasuns notifications@github.com:
Still getting the error when calling SystemTray.isSupported()
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] Exception in Preloader start
method
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] Exception in thread "main"
java.lang.RuntimeException: Exception in Preloader start method
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:882)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.lang.Thread.run(Thread.java:834)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:519)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
com.oracle.svm.core.windows.WindowsJavaThreads.osThreadStartRoutine(WindowsJavaThreads.java:138)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] Caused by:
java.lang.UnsatisfiedLinkError: no awt in java.library.path
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
com.oracle.svm.core.jdk.NativeLibrarySupport.loadLibraryRelative(NativeLibrarySupport.java:132)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.lang.ClassLoader.loadLibrary(ClassLoader.java:275)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.lang.Runtime.loadLibrary0(Runtime.java:830)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.lang.System.loadLibrary(System.java:1871)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.awt.Toolkit$3.run(Toolkit.java:1395)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.awt.Toolkit$3.run(Toolkit.java:1393)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.security.AccessController.doPrivileged(AccessController.java:84)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.awt.Toolkit.loadLibraries(Toolkit.java:1392)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.awt.Toolkit.(Toolkit.java:1425)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:375)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:295)
[Sun Dec 27 11:07:04 EET 2020][INFO] [SUB] at
java.awt.SystemTray.isSupported(SystemTray.java:221)—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/oracle/graal/issues/2842#issuecomment-751443733, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ADJRPVNWFEEY2PVMWL4WYQLSW33EJANCNFSM4RIFBLBQ
.
Are you running the dev build? This hasn't been pushed to prod yet. Op zo 27 dec. 2020 10:13 schreef javasuns notifications@github.com:
…
Yes, I use the latest “GraalVM CE 21.1.0-dev" release
Is AWT support added on windows too? I only tested it on linux which worked correctly.
Java 8, most likely not. For Windows, it turns out that it is a noticeable amount of work. \CC pejovica
Windows is not (yet) supported. But it looks like someone is working on it: https://github.com/oracle/graal/pull/3079.
I see that this issue is in the 21.0 milestone, but folks have been testing against 21.1. In which release should we expect this feature?
Most helpful comment
This should be fixed for the LINUX_AMD64 platform in the latest 20.3 build