В настоящее время я разрабатываю приложение для рабочего стола Swing
. Это приложение также использует значок в трее, который обрабатывается SystemTray
of dorkbox.Java/Swing: Desktop.open() вызывает GTK-ERROR
Теперь мне нужно открыть файл с помощью приложения по умолчанию. Для этого я использую метод Desktop.open()
AWT
следующим образом.
if (Desktop.isDesktopSupported()) {
System.out.println("Get desktop.");
Desktop desktop = Desktop.getDesktop();
System.out.println("Got desktop.");
desktop.open(file);
}
Но теперь здесь возникает проблема: На некоторых устройствах (которые, очевидно, имеют GTK2 и GTK3 установлены эти несколько строк делают сбой приложения - сбои программы при выполнении Desktop.isDesktopSupported()
линии с gtk-error ** gtk+ 2.x symbols detected. using gtk+ 2.x and gtk+ 3 is not supported
Чтобы быть. честно говоря, я понятия не имею, что здесь происходит, но если только GTK3 установлен, приложение работает как шарм. SystemTray
, похоже, использует GTK3, потому что я явно не использовал его для использования GTK2. Итак, что вызывает это сочетание GTK2 и 3? Есть ли способ заставить класс Desktop
использовать правая версия GTK (такая же, как и для остальных приложений)?
Если у GTK 2 и GTK 3 есть файлы с тем же именем (что я предполагаю, что они делают), и оба они находятся в пути к библиотеке, я бы ожидал, что любое приложение GTK 3 сообщит об этой ошибке. – VGR
Видимо, это не тот случай. Интересный вопрос: почему одна часть «AWT» использует «GTK3» в качестве другой части «swing», использует «GTK2» (или наоборот). – FlashTek
Как запускается ваше приложение? Я склонен предлагать изменить LD_LIBRARY_PATH в вашей среде. – VGR