On Mon, 6 Jul 2026 15:11:51 GMT, Pabulaner IV <[email protected]> wrote:

> # Problem description
> 
> When You create a JavaFX native application with *jpackage* for macOS You 
> will run into an issue when trying to handle URIs. When Your application 
> isn’t running and You have it registered for handling certain types of URIs 
> it won’t receive the first URI. 
> 
> ## Here is a simple example: 
> 
> If You have a JavaFX application that handles URIs for example of the form 
> *openurifx://your-content* and You have it installed with *jpackage* for 
> macOS and now You try to handle an URI by running the following command: 
> 
> ``` open openurifx://hello-world ``` 
> 
> The application will open, but it won’t receive the above URI. If You call 
> the same command after the application is already running, everything will 
> work fine and the application will receive the URI.
> 
> # Problem cause
> 
> The cause of the problem is that when You build a JavaFX application and want 
> to handle URIs You will have to combine JavaFX and AWT as AWT provides the 
> URI handling capabilities. So the startup process is as follows:
> 
> 1. JavaFX is initialized
> 2. JavaFX forwards the URI event to AWT
> 3. AWT is initialized 
> 4. AWT is ready to handle URI events from JavaFX
> 
> The issue is that the URI event is delivered before AWT can handle it and 
> therefore is simple dropped. That’s why later URIs will be received and are 
> handled properly. 
> 
> # Fix
> 
> The fix is that JavaFX will wait until it receives a ready event from AWT so 
> JavaFX knows that AWT is able to handle events now. After that it will 
> forward all buffered URIs and therefore everything will be handled correctly. 
> This means that the fix involves both the JFX and JDK repositories and needs 
> to be integrated in both. 
> 
> **Note**: In the case that a user has only a fix for the JFX part the URIs 
> won’t be delivered at all, but there won’t be any error. This means that 
> JavaFX applications won’t be able to handle any URIs so it might be an idea 
> to add an environment variable to tell JavaFX to not wait for an AWT ready 
> event. Then the first URI event would be lost, but at least all the following 
> events would be handled properly.
> 
> # Tests
> 
> To test the error and the fix You can clone this repository: 
> https://github.com/pabulaner/openurifx and checkout the branch *first-url*. 
> There You will find a README.md with further instructions.
> 
> PR inside the JDK: https://github.com/openjdk/jdk/pull/31791
> 
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

Whenever I used both AWT and JavaFX together, I force AWT to initialize before 
JavaFX as several other things can break as well when doing it the other way 
around. Is initializing JavaFX before AWT even officially supported?

-------------

PR Comment: https://git.openjdk.org/jfx/pull/2203#issuecomment-4900623535

Reply via email to