如何使用Maven构建可运行的JavaFX应用程序?

我是JavaFX的新手.我已经使用maven创建了一个Hello World项目.当我在Eclipse中运行它时,它工作正常.

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
    primaryStage.setTitle("Hello World!");
    Button btn = new Button();
    btn.setText("Say 'Hello World'");
    btn.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent event) {
            System.out.println("Hello World!");
        }
    });
    StackPane root = new StackPane();
    root.getChildren().add(btn);
    primaryStage.setScene(new Scene(root, 300, 250));
    primaryStage.show();
}

我找到了deployment tutorial,但是当我的程序随附Maven时,我不知道如何构建它.

当我尝试使用build.fxbuild构建应用程序时,出现此错误.

Buildfile: C:\test\project\workspace\javafx-helloworld\build\build.xml

setup-staging-area:
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\externalLibs
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\externalLibs
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\project
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\project
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\projectRefs

do-compile:
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\build\src
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\build\libs
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\build\classes
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\build\libs
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\build\src
       [javac] Compiling 1 source file to C:\test\project\workspace\javafx-helloworld\build\build\classes

init-fx-tasks:
     [taskdef] Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found.

do-deploy:
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\dist
       [mkdir] Created dir: C:\test\project\workspace\javafx-helloworld\build\dist\libs
        [copy] Copying 1 file to C:\test\project\workspace\javafx-helloworld\build\dist\libs

**BUILD FAILED
C:\test\project\workspace\javafx-helloworld\build\build.xml:93: Problem: failed to create task or type javafx:com.sun.javafx.tools.ant:resources
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any / declarations have taken place.
No types or tasks have been defined in this namespace yet**

解决方法:

现在有一个用于JavaFX的maven插件:

https://github.com/zonski/javafx-maven-plugin

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>package</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mainClass>[put your application main class here]</mainClass>
        <bundleType>ALL</bundleType>
    </configuration>
</plugin>
上一篇:将列名更改为其他时,TableView提供错误


下一篇:无法更改JavaFX中的Alert窗口的initModality