On Mon, 4 May 2026 19:58:05 GMT, Kevin Rushforth <[email protected]> wrote:
>> This PR allows Main classes to be launched if they extend the Application >> class, even when only having the JavaFX dependencies on the classpath >> instead of the module path. This issue has been there for a long time and >> was quite annoying for a lot of people: >> https://stackoverflow.com/questions/78501081/how-do-i-fix-error-javafx-runtime-components-are-missing-and-are-required-to-r. >> It is also a common use case for JavaFX developers when testing some PR to >> create a quick reproducer class without setting up the module path properly. >> >> While it is true that launching modern JavaFX via the classpath is >> unuspported, it still launches and prints its own warnings, which is better >> than the previous behavior. The old launcher error message in this case is >> misleading as the runtime components aren't really missing, they are just >> not in the module path. >> >> This change should not have any change in behavior for any other case. >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > src/java.base/share/classes/sun/launcher/LauncherHelper.java line 1131: > >> 1129: // this method is only called if we can find the module >> 1130: // in the first place, so it will always be present >> 1131: Module om = >> ModuleLayer.boot().findModule(JAVAFX_GRAPHICS_MODULE_NAME).orElseThrow(); > > Even though this will now never be called unless > `findModule(JAVAFX_GRAPHICS_MODULE_NAME)` is present, it seems cleaner and > less intrusive to revert the changes in this method. orElseThrow(InternalError::new) would be okay too. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/31016#discussion_r3189094469
