ارور java.lang.UnsupportedOperationException: The system tray is not supported on the current platform. در برخی از برنامه ها

من نرم افزار دانلودر 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

این تنظیمات ایکون نرم افزار رو از تسک بارت برمیداره ولی نرم افزار همچنان فعاله :slight_smile:

افزونه tray icons که پیشفرض روی پارچ گنوم هست، منطقاً نباید چنین چیزی رو ببینی.
هرچند توصیه نمی‌کنم از هوش مصنوعی استفاده کنی و ارورهای مربوط به این برنامه رو هم به توسعه دهدنش منتقل کن. چون با کاتلین نوشته شده و جزو استک‌های خود گنو/لینوکس هم محسوب نمیشه که من الان بخوام راه حل قطعی بدم.

اتفاقا این راه حل برای هوش مصنوعیه ولی خب من سعی کردم با گذارش کردنش یه راه حلی برای دیگران بزارم . تو که عشقی

1 Like