I can't debug an application using netbeans 11 with JavaFX 12

If you see the documentation of the javafx-maven-plugin, you can add some VM arguments to the run goal in order to debug your project in NetBeans.

However, to keep the usual run goal ready to just run the project and not debug, without commenting out the added options, we can add a second execution to the plugin.

Modify your plugin like this:

<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.2</version>
    <executions>
        <execution>
            <!-- Default configuration for running -->
            <id>default-cli</id>
            <configuration>
                <mainClass>com.mycompany.simonsaysgfx.App</mainClass>
            </configuration>
        </execution>
        <execution>
            <!-- Configuration for debugging -->
            <id>debug</id>
            <configuration>
                <options>
                    <option>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8000</option>
                </options>
                <mainClass>com.mycompany.simonsaysgfx.App</mainClass>
            </configuration>
        </execution>
    </executions>
</plugin>

Now you can run from command line:

mvn clean javafx:run

to run as usual your application, and:

mvn clean javafx:run@debug

to start debug mode. Then you will see something like:

[INFO] --- javafx-maven-plugin:0.0.2:run (debug) @ Project ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 3 source files to /path/to/project/target/classes
Listening for transport dt_socket at address: 8000

At this point, you need to set your breakpoints and attach a debugger from NetBeans -> Debug -> Attach Debugger to port 8000:

debugger

Click OK and you will be able to debug your projects.

Note that you can also define custom NetBeans actions to use the Run and Debug buttons. Add a nbactions.xml file to the root of your project, with this two actions:

<?xml version="1.0" encoding="UTF-8"?>
<actions>
    <action>
        <actionName>run</actionName>
        <goals>
            <goal>clean</goal>
            <goal>javafx:run</goal>
        </goals>
    </action>
    <action>
        <actionName>jlink</actionName>
        <goals>
            <goal>clean</goal>
            <goal>javafx:jlink</goal>
        </goals>
    </action>
    <action>
        <actionName>debug</actionName>
        <goals>
            <goal>clean</goal>
            <goal>javafx:run@debug</goal>
        </goals>
    </action>
</actions>

Now you can use NetBeans run and debug buttons.


José's answer is good. Just go little bit further.

In pom.xml set the address=${jpda.address} instead of address=*:8000

    <execution>
        <!-- Configuration for debugging -->
        <id>debug</id>
        <configuration>
            <options>
                <option>-agentlib:jdwp=transport=dt_socket,server=n,address=${jpda.address}</option>
            </options>
            <mainClass>cz.masci.mvcpattern.mvc.App</mainClass>
        </configuration>
    </execution>

Be aware of set server=n, otherwise the application will not start.

In the debug action set jpda.listen=true property

   ...
    <action>
        <actionName>debug</actionName>
        <goals>
            <goal>clean</goal>
            <goal>javafx:run@debug</goal>
        </goals>
        <properties>
            <jpda.listen>true</jpda.listen>
        </properties>
    </action>

Then you don't need to attach debuger anymore. Netbeans does it for you.