Skip to content

JavaFX not available/not working at runtime for NB modules #9491

Description

@stefanofornari

Apache NetBeans version

Apache NetBeans 30

What happened

Goal: build a NB module which uses JavaFX for the UI.

Understood solution:

  1. add a dependency to org-netbeans-libs-javafx in the module pom
  2. add the needed dependencies for JavaFX modules (controls, fxml, etc.) in the module pom with scope provided - NB should provide the classes
  3. build the module
  4. install JavaFX Library for XXX (Linux/Windows/Mac)
  5. install the module

What works:
The module compile and installs, but when it tries to run JavaFX, it runs into exception

SEVERE [global]
java.lang.IllegalStateException: Toolkit not initialized
	at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:436)
	at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:431)
	at javafx.application.Platform.runLater(Platform.java:168)
	at ste.netbeans.restart.RestartIDEAction.lambda$actionPerformed$2(RestartIDEAction.java:83)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

I would expect the module to pick the libraries in ext, which are available:

[ste userdir] =)o ls -la modules/ext/
total 54204
drwxrwxr-x 2 ste ste     4096 Jul  7 23:14 .
drwxrwxr-x 3 ste ste     4096 Jul  7 23:15 ..
-rw-rw-r-- 1 ste ste   753864 Jul  7 23:14 javafx-base-21.0.9-linux.jar
-rw-rw-r-- 1 ste ste  2585211 Jul  7 23:14 javafx-controls-21.0.9-linux.jar
-rw-rw-r-- 1 ste ste  4697444 Jul  7 23:14 javafx-graphics-21.0.9-linux.jar
-rw-rw-r-- 1 ste ste  1507586 Jul  7 23:14 javafx-media-21.0.9-linux.jar
-rw-rw-r-- 1 ste ste    89705 Jul  7 23:14 javafx-swing-21.0.9-linux.jar
-rw-rw-r-- 1 ste ste 45844181 Jul  7 23:14 javafx-web-21.0.9-linux.jar

It seems instead these libraries are not available unless declared as compile scope.

Language / Project Type / NetBeans Component

No response

How to reproduce

See https://github.com/stefanofornari/nb-ide-restart/tree/ste/test/for_nb_classloading

Did this work correctly in an earlier version?

No / Don't know

Operating System

Linux

JDK

both OpenJDK 21 and Zulu 21.50

Apache NetBeans packaging

Apache NetBeans binary zip

Anything else

I could not find any useful and updated documentation at least on how JavaFX IMplementation for XXX is supposed to work and how to use it either to build a JavaFX application or a module using JavaFX

Are you willing to submit a pull request?

No

Metadata

Metadata

Assignees

No one assigned

    Labels

    JavaFX[ci] enable JavaFX jobkind:bugBug report or fixneeds:triageRequires attention from one of the committers

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions