LINUX.ORG.RU

java hidpi

 , ipkvm,


0

1

Есть чудо девайс aten cs1708i - ipkvm

Есть slackware-15/x86_64 c xfce-4.12

Все замечательно работает, но есть проблема - на 4к мониторе оно мелковато.

Прочитал про настройки жабы для работы с hiDPI был сделан скрипт (чтоб ругать жабы было видно)

export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing
.plaf.gtk.GTKLookAndFeel -Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'

exec /usr/lib64/jre/bin/javaws "$@"
Запускаю, а в ответ ругань на execstack какой-то либы /tmp/libiKVMLib_V1.0.so и тишина. (правда жаба остается в памяти и ее нужно убивать)
Picked up _JAVA_OPTIONS: -Dsun.java2d.uiScale=2 -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /tmp/libiKVMLib_V1.0.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'
Если опций нет, т.е. просто запускается javaws, то ругань на либу есть, но при этом все работает.

Что странно: /tmp/libiKVMLib_V1.0.so выкачивается откуда-то, т.к. в /tmp изначально ее нет и после появления у нее владелец тот, кто запустил. Но это еще не все. Эта либа 32-x битная!

Вопрос - что это за куйня с выкачиванием либы и какого хрена она 32-х битная?

nm на нее говорит следующее

/tmp/libiKVMLib_V1.0.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamical
ly linked, with debug_info, not stripped
00002710 T Java_com_aten_javaclient_jni_JniInterfaceClass_registerHook
000014d8 T Java_com_aten_javaclient_jni_JniInterfaceClass_setCatchSystemKey
0000295c T Java_com_aten_javaclient_jni_JniInterfaceClass_setKeyHook
000028c8 T Java_com_aten_javaclient_jni_JniInterfaceClass_setKeyLed
0000162c T Java_com_aten_javaclient_jni_JniInterfaceClass_unregisterHook
000014fc T ExitThread()
00002578 T CreateThread()
0000142a T SetSpecialKey(int, int)
0000276e T SetKeyboardLed(bool, bool, bool)
000013fc T ResetSpecicalkey()
00001490 T GetSpecialKeyStatus()
00001932 T GetVKCodeAndLocation(int, int, int, int&, int&, int&)
00002a36 W JNIEnv_::GetMethodID(_jclass*, char const*, char const*)
00002a16 W JNIEnv_::NewGlobalRef(_jobject*)
00002aae W JNIEnv_::CallVoidMethod(_jobject*, _jmethodID*, ...)
00002a66 W JNIEnv_::GetJavaVM(JavaVM_**)
00002a88 W JavaVM_::AttachCurrentThread(void**, void*)
00006854 A __bss_start
00006854 A _edata
00006904 A _end
00002b24 T _fini
00001054 T _init
00004600 D x_usb_key_map

Смешивать 32 и 64 бита в одном процессе нельзя вроде как...

Если обращаться в ТП aten, то нужно ооочень подробно все им описывать, т.к. они тупые до невозможности.

Если бы я знал причину проблемы, возможно я их бы допинал, т.к. девайс шибко полезный в некоторых случаях.

★★★★★

Последнее исправление: vel (всего исправлений: 1)

Либа скорей всего не выкачивается, а распаковывается из какой-нибудь .jar-ки. Частый подход, когда нативная либа нужна, но распространять жава-библиотеку хочется попроще, одной жаркой. Пакуют туда длл-ки для всех платформ и при запуске распаковывают в tmp нужную.

Насчёт битности не знаю. Может у тебя 32-битная жава?

В общем к делу это всё отношения не имеет. Копай в другом месте. Если без опций запускается и работает с такими же ворнингами, значит проблема не в этом.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 2)

Не исключено, что JNLP-дескриптор запускает ещё один процесс 32-разрядной JVM. Так что я бы посмотрел на ps -ef | grep java до и во время исполнения.

Я бы посоветовал обходной путь с Nimbus LaF — он, как и GTK+ LaF, DPI-aware (т е не прибит гвоздями к 75 или 96 dpi).

Bass ★★★★★
()
Последнее исправление: Bass (всего исправлений: 1)
Ответ на: комментарий от Bass

Не исключено, что JNLP-дескриптор запускает ещё один процесс 32-разрядной JVM.

Как это ? У меня нет 32-х битной жабы. От слова «совсем».

Так что я бы посмотрел на `ps -ef | grep Java до и во время исполнения.

посмотреть то можно, но на что именно смотреть?

Я бы посоветовал обходной путь с Nimbus LaF — он, как и GTK+ LaF, DPI-aware (т е не прибит гвоздями к 75 или 96 dpi).

Запускаться оно запускается,стили элементов управления изменились, но размер как был микроскопический так и остался.

vel ★★★★★
() автор топика

Попробуй сделать всё наоборот и использовать флаг

-Dsun.java2d.dpiaware=false
именно со значением false. Если не проканает, то попробуй еще и напрямую true, но это вряд ли.

+ тыб хоть версию жабы сказал, между ними бездна

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

тыб хоть версию жабы сказал, между ними бездна

Последняя версия на которой проверялась jre1.8.0_221

В jre1.8.0_181 проблема была абсолютно идентичная.

При том, что в течении года оборудование слегка изменилось (amd A10, Ryzen3 2200G, Ryzen5 3400G, i5-3570K + Radeon RX 550).

Добавление "-Dsun.java2d.dpiaware=false" или true добавило глюков при отображении текста, а масштабирование так и не заработало.

vel ★★★★★
() автор топика

С некоторыми проблемами, но заработал javaws из icedtea-web c jdk-12.0.2

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

надо всегда использовать самую свежую версию жабы. Восьмая жаба - это для замшелого ынтерпрайза, такие вещи как графика в старых жабах фиксить уже почти считай не будут. Теоретически фиксы можно бэкпортировать назад, практически - кто этим будет заниматься?

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.