Javafx не запускается на чипе M3, ошибка ‘AssertionFailure’ не решается.

Вопрос или проблема

Я пытался запустить программу javafx на своем mac и столкнулся с этой ошибкой:

26 окт 2024 7:54:11 AM com.sun.glass.ui.mac.MacApplication lambda$waitForReactivation$6
ПРЕДУПРЕЖДЕНИЕ: Время ожидания при ожидании реактивации приложения
*** Завершение приложения из-за необработанного исключения 'NSInternalInconsistencyException', причина: '0x0 является недопустимым NSTrackingRectTag. Общие возможные причины этого: 1. этот trackingRectTag уже удален, 2. NSTrackingRectTag был усечен до 32 бит в какой-то момент.'
*** Первый стек вызовов исключения:
(
    0   CoreFoundation                      0x0000000182998ec0 __exceptionPreprocess + 176
    1   libobjc.A.dylib                     0x000000018247ecd8 objc_exception_throw + 88
    2   Foundation                          0x0000000183b95588 -[NSCalendarDate initWithCoder:] + 0
    3   AppKit                              0x0000000186c8d7c4 -[_NSTrackingAreaAKViewHelper removeTrackingRect:] + 200
    4   libglass.dylib                      0x0000000111e5ef7c Java_com_sun_glass_ui_mac_MacApplication__1getMacKey + 3456
    5   libglass.dylib                      0x0000000111e64074 RemoteLayerHostRemoteIdInLocal + 3620
    6   AppKit                              0x00000001864a186c -[NSView setFrame:] + 304
    7   libglass.dylib                      0x0000000111e640d4 RemoteLayerHostRemoteIdInLocal + 3716
    8   AppKit                              0x00000001864ae2a4 -[NSView resizeWithOldSuperviewSize:] + 488
    9   AppKit                              0x00000001864adc30 -[NSView resizeSubviewsWithOldSize:] + 360
    10  AppKit                              0x0000000186494074 -[NSView setFrameSize:] + 948
    11  AppKit                              0x00000001864a186c -[NSView setFrame:] + 304
    12  AppKit                              0x00000001864ae2a4 -[NSView resizeWithOldSuperviewSize:] + 488
    13  AppKit                              0x00000001864adc30 -[NSView resizeSubviewsWithOldSize:] + 360
    14  AppKit                              0x0000000186494074 -[NSView setFrameSize:] + 948
    15  AppKit                              0x00000001864ace0c -[NSThemeFrame setFrameSize:] + 244
    16  AppKit                              0x00000001864ac768 -[NSWindow _oldPlaceWindow:fromServer:] + 532
    17  AppKit                              0x00000001864abc1c -[NSWindow _setFrameCommon:display:fromServer:] + 1984
    18  libglass.dylib                      0x0000000111e6f0c4 Java_com_sun_glass_ui_mac_MacWindow__1setBounds2 + 416
    19  ???                                 0x000000013fd3cfd4 0x0 + 5365813204
    20  ???                                 0x000000013fd39110 0x0 + 5365797136
    21  ???                                 0x000000013fd39110 0x0 + 5365797136
    22  ???                                 0x000000013fd39110 0x0 + 5365797136
    23  ???                                 0x000000013fd396b0 0x0 + 5365798576
    24  ???                                 0x000000013fd39110 0x0 + 5365797136
    25  ???                                 0x000000013fd39110 0x0 + 5365797136
    26  ???                                 0x000000013fd39110 0x0 + 5365797136
    27  ???                                 0x000000013fd39110 0x0 + 5365797136
    28  ???                                 0x000000013fd39110 0x0 + 5365797136
    29  ???                                 0x000000013fd39110 0x0 + 5365797136
    30  ???                                 0x000000013fd39110 0x0 + 5365797136
    31  ???                                 0x000000013fd39110 0x0 + 5365797136
    32  ???                                 0x000000013fd39110 0x0 + 5365797136
    33  ???                                 0x000000013fd39110 0x0 + 5365797136
    34  ???                                 0x000000013fd39110 0x0 + 5365797136
    35  ???                                 0x000000013fd396b0 0x0 + 5365798576
    36  ???                                 0x000000013fd39110 0x0 + 5365797136
    37  ???                                 0x000000013fd396b0 0x0 + 5365798576
    38  ???                                 0x000000013fd38ea0 0x0 + 5365796512
    39  ???                                 0x000000013fd39440 0x0 + 5365797952
    40  ???                                 0x000000013fd38ea0 0x0 + 5365796512
    41  ???                                 0x000000013fd38ea0 0x0 + 5365796512
    42  ???                                 0x000000013fd39110 0x0 + 5365797136
    43  ???                                 0x000000013fd396b0 0x0 + 5365798576
    44  ???                                 0x000000013fd34114 0x0 + 5365776660
    45  libjvm.dylib                        0x0000000102364764 _ZN9JavaCalls11call_helperEP9JavaValueRK12methodHandleP17JavaCallArgumentsP10JavaThread + 984
    46  libjvm.dylib                        0x00000001023d575c _ZL20jni_invoke_nonstaticP7JNIEnv_P9JavaValueP8_jobject11JNICallTypeP10_jmethodIDP18JNI_ArgumentPusherP10JavaThread + 992
    47  libjvm.dylib                        0x00000001023da184 jni_CallVoidMethod + 284
    48  libglass.dylib                      0x0000000111e5a998 JNI_OnLoad + 204
    49  Foundation                          0x0000000183b00b90 __NSThreadPerformPerform + 264
    50  CoreFoundation                      0x0000000182926414 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
    51  CoreFoundation                      0x00000001829263a8 __CFRunLoopDoSource0 + 176
    52  CoreFoundation                      0x000000018292610c __CFRunLoopDoSources0 + 244
    53  CoreFoundation                      0x0000000182924cf8 __CFRunLoopRun + 840
    54  CoreFoundation                      0x0000000182924334 CFRunLoopRunSpecific + 572
    55  HIToolbox                           0x000000018dd5d0cc RunCurrentEventLoopInMode + 292
    56  HIToolbox                           0x000000018dd62ebc ReceiveNextEventCommon + 636
    57  HIToolbox                           0x000000018dd63020 _BlockUntilNextEventMatchingListInModeWithFilter + 76
    58  AppKit                              0x0000000186468a70 _DPSNextEvent + 660
    59  AppKit                              0x0000000186d8e7b8 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688
    60  AppKit                              0x000000018645bb7c -[NSApplication run] + 480
    61  libglass.dylib                      0x0000000111e5cb20 JNI_OnLoad + 8788
    62  Foundation                          0x0000000183b00b90 __NSThreadPerformPerform + 264
    63  CoreFoundation                      0x0000000182926414 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
    64  CoreFoundation                      0x00000001829263a8 __CFRunLoopDoSource0 + 176
    65  CoreFoundation                      0x000000018292610c __CFRunLoopDoSources0 + 244
    66  CoreFoundation                      0x0000000182924cf8 __CFRunLoopRun + 840
    67  CoreFoundation                      0x0000000182924334 CFRunLoopRunSpecific + 572
    68  libjli.dylib                        0x0000000100e10e84 CreateExecutionEnvironment + 404
    69  libjli.dylib                        0x0000000100e0c984 JLI_Launch + 1152
    70  java                                0x0000000100dc7bb0 main + 404
    71  dyld                                0x00000001824bc274 start + 2840
)
libc++abi: завершение из-за необработанного исключения типа NSException

Я только что перешел с компьютера на Windows на Mac, смотрел руководство по установке IntelliJ и Java и попытался запустить свою первую программу javafx на Mac, но она не удалась. Я пытался исследовать эту ошибку, но пока не нашел никаких решений. Я использую Oracle OpenJDK 23.0.1, но я также использовал версии, которые IntelliJ автоматически загрузил, и они все равно не работают. Я использую скрипт сборки Maven.

У меня также появляется эта ошибка, заявляющая, что “java неожиданно завершил работу” (она очень длинная, поэтому я предоставил ссылку на pastebin с полными данными) Отчет об ошибке

Спасибо!

Ответ или решение

Проблема запуска JavaFX на Mac с чипом M3 и ошибки ‘AssertionFailure’ является общей среди разработчиков, которые перешли на платформу Apple из других систем, таких как Windows. Основные причины данной ошибки часто связаны с недостающими зависимостями, неправильной конфигурацией или несовместимостью версий.

Первая проблема: NSInternalInconsistencyException

Ошибка, которую вы видите, указывает на проблему с NSTrackingRectTag, который считается недействительным. Это может произойти по нескольким причинам:

  1. Удаление Tracking Rect Tag: Убедитесь, что ваша программа не пытается удалить NSTrackingRectTag, который уже был уничтожен.
  2. Обработка 32-битных тегов: Ошибка может быть спровоцирована приведением шоу-маркера к 32-битному значению, что происходит в кросс-платформенной среде, такой как JavaFX.

Вторая проблема: несовместимость с M3

Чипы Apple M3 представляют собой совершенно новое поколение архитектуры, что может приводить к несовместимостям, особенно если используемая версия JavaFX устарела.

  1. Проверка версии JavaFX: Убедитесь, что вы используете последнюю доступную версию JavaFX, совместимую с вашей версией JDK. Обычно рекомендуется зверифицировать совместимость через официальные страницы JavaFX.
  2. Использование JavaFX с JDK 17 или выше: Поддержка JavaFX в старых версиях JDK может быть ограниченной, особенно на новые архитектуры. Попробуйте использовать JDK версии 17 или более позднюю, как вы уже начали с OpenJDK 23.

Шаги для решения проблемы

  1. Проверьте JDK и JavaFX: Убедитесь, что версия JDK (например, OpenJDK 23.0.1) совместима с вашей версией JavaFX. Для работы с JavaFX желательно использовать JDK, поддерживающий JavaFX.

  2. Добавьте JavaFX библиотеки: Если вы используете Maven, убедитесь, что у вас добавлены необходимые зависимости для JavaFX в вашем pom.xml. Пример:

    <dependency>
       <groupId>org.openjfx</groupId>
       <artifactId>javafx-controls</artifactId>
       <version>23.0.1</version>
    </dependency>
    <dependency>
       <groupId>org.openjfx</groupId>
       <artifactId>javafx-fxml</artifactId>
       <version>23.0.1</version>
    </dependency>
  3. Параметры VM: Активируйте необходимые параметры виртуальной машины, чтобы приложение могло корректно работать с графикой. Можете использовать следующее при запуске приложения:

    --module-path /path/to/javafx-sdk-23.0.1/lib --add-modules javafx.controls,javafx.fxml
  4. Отладка: Используйте параметры отладки и предложенные вами логи. Проверьте, сколько ресурсов использует ваше приложение и ищите потенциальные утечки памяти.

  5. Обновление до последней версии macOS: Возможно, проблема связана с устаревшими библиотеками в системе. Обновите до самой последней версии macOS, если вы еще не сделали этого.

Подача отчета об ошибке

Если ни одно из этих действий не сработает, рекомендация будет связаться с поддержкой Oracle или сообществом JavaFX, предоставив полное описание ошибки и вашу систему. Также обязательно проверьте репозиторий GitHub JavaFX на наличие зарегистрированных проблем, похожих на вашу.

Заключение

Сложности при запуске JavaFX на Mac с архитектурой M3 могут быть вызваны различными причинами, от несовместимости версий до настроек окружения. Следуя описанным шагам, вы сможете устранить большинство причин и восстановить работоспособность вашего приложения.

Оцените материал
Добавить комментарий

Капча загружается...