من نرم افزار دانلودر abdownloader رو توی گنوم دارم و این برنامه در پس زمینه فعال میمونه ولی وقتی میزدم روی دکمه ویندوز تا تموم پنجره های باز رو ببینم این ارور رو بهم نشون میداد :
java.lang.UnsupportedOperationException: The system tray is not supported on the current platform.
at java.desktop/java.awt.SystemTray.getSystemTray(Unknown Source)
at java.desktop/sun.awt.X11.XTrayIconPeer$4$1.run(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
این ارور رو من خیلی گشتم تا بتونم اوکی کنم . و کردم اما نه اونجوری که باید بشه .
حالا این خطا برای چیه ؟
به این معناست که پلتفرمی که برنامهات روی آن در حال اجراست از System Tray پشتیبانی نمیکند.
در جاوا، وقتی از کلاس java.awt.SystemTray یا TrayIcon استفاده میکنی (برای گذاشتن آیکون در system tray ویندوز/لینوکس/مک)، باید سیستم عامل و محیط گرافیکی از این قابلیت پشتیبانی کنند.
شما اول این کد رو میزنین تا ببینین رو کدوم محیط گرافیکی هستین
echo $XDG_SESSION_TYPE
خروجی دسکتاپم wayland بود و جاوا هنوز بهطور کامل از Wayland پشتیبانی نمیکنه (تا نسخههای فعلی Java 21 و حتی 23 هم)، و معمولاً برای GUI یا SystemTray هنوز از لایهی سازگاری X11 استفاده میکنه.
شما اول میاین و open jdk رو نصب میکنید :
sudo pacman -S jre-openjdk
و میاین در این حالت از x11 اجرا میکنیدش :
env XDG_SESSION_TYPE=x11 GDK_BACKEND=x11 java -jar نام برنامه.jar
ولییی باز هم برای من اجرا نشد و در نهایت من امد وماس مالی کردم مشکل رو به این صورت :
در abdownloadmanager معمولاً این گزینه در تنظیمات هست:
Settings → Interface → Minimize to tray → Off
این تنظیمات ایکون نرم افزار رو از تسک بارت برمیداره ولی نرم افزار همچنان فعاله ![]()