Что делать если при запуске программы, работающей с графикой получаю ошибку java.lang.UnsatisfiedLinkError?
Добрый день! Прохожу курс Java Programming with purpose на Coursera. На данном этапе приходится делать программы для работы с графикой. Начал работать на Windows и с графикой не было проблем. Позже, пришлось перейти на Linux и теперь при запуске тех же программ стал получать следующие ошибки:
Exception in thread "main" java.lang.ExceptionInInitializerError
at Triangle.main(Triangle.java:5)
Caused by: java.awt.HeadlessException
at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:164)
at java.desktop/java.awt.Window.(Window.java:553)
at java.desktop/java.awt.Frame.(Frame.java:428)
at java.desktop/java.awt.Frame.(Frame.java:393)
at java.desktop/javax.swing.JFrame.(JFrame.java:180)
at StdDraw.initGUI(StdDraw.java:806)
Пробовал команду: java -Djava.awt.headless=true
После добавил в программу System.setProperty("java.awt.headless", "false") и ошибка изменилась на:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-21-openjdk-21.0.4.0.7-2.fc40.x86_64/lib/libawt_xawt.so
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2422)
at java.base/java.lang.Runtime.load0(Runtime.java:852)
at java.base/java.lang.System.load(System.java:2025)
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139)
...
Подскажите пожалуста, что ещё можно сдалать?
Версия java:
openjdk 21.0.4 2024-07-16
OpenJDK Runtime Environment (Red_Hat-21.0.4.0.7-2) (build 21.0.4+7)
OpenJDK 64-Bit Server VM (Red_Hat-21.0.4.0.7-2) (build 21.0.4+7, mixed mode, sharing)
Добрый день, Дмитрий. Воспользовался Вашим советом. Помогло. Теперь получаю другую ошибку.
Exception in thread "main" java.lang.NoClassDefFoundError: StdDraw$RetinaImageIcon
at StdDraw.initGUI(StdDraw.java:817)
at StdDraw.(StdDraw.java:729)
at Triangle.main(Triangle.java:5)
Caused by: java.lang.ClassNotFoundException: StdDraw$RetinaImageIcon
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
Оказалось, что курс сделал кастомную команду, которая решает все эти проблемы.
При запуске вместо комманды java предлогается использовать java-introcs.