JavaFX jfx:本机输出exe不运行Java主类

时间:2017-01-09 20:44:18

标签: java maven javafx

这是我的简单JavaFX应用程序,我可以使用jfx:native和Maven构建本机安装程序:

public class HelloWorld extends Application {
    public static void main(String... args){
        launch(args);
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        System.out.println("Hello world!");
    }
}

运行该maven构建时正在创建安装程序。

  • 甚至运行安装程序安装的exe文件的问题可能是什么原因导致Main类无法执行(在这种情况下" Hello Word!"不会在控制台中显示为预期?
  • 以下可以调整下面的maven插件,以便安装本机包将exe添加到PATH中?

这是POM for JavaFX的部分:

<plugin>
        <groupId>com.zenjava</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>8.7.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>native</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <mainClass>com.mycompany.HelloWorld</mainClass>
          <nativeInstallers/>
        </configuration>
      </plugin>

1 个答案:

答案 0 :(得分:0)

免责声明:我是javafx-maven-plugin的维护者!

我假设您在Windows上使用此maven-plugin,因为这是我对您的问题所期待的。

首先:你必须不要打电话给&#34;本地人&#34;捆绑,因为它是作为maven-lifecycle运行的特殊设置。请将执行更改为:

<executions>
    <execution>
        <!-- required before build-native -->
        <id>create-jfxjar</id>
        <phase>package</phase>
        <goals>
            <goal>build-jar</goal>
        </goals>
    </execution>
    <execution>
        <id>create-native</id>
        <phase>package</phase>
        <goals>
            <goal>build-native</goal>
        </goals>
    </execution>
</executions>

其次:链接的Windows可执行文件不会调用javaw,也不调用java。 windows-executable仅作为GUI应用程序构建,这意味着从CLI调用exe文件不会在命令行上打印任何内容。

前段时间我已经提出了这个答案:Write to console from a native javafx app created with Inno Setup and maven

  在进一步挖掘之后,我发现有一些有趣的东西:   生成的EXE文件是一个简单的Windows可执行文件,没有   cli-executable,如启动器源代码中所见,这就是原因   你没有看到任何控制台输出,但在流水线时有结果   进入某个文件。

这意味着您需要使用自己的预构建的exe文件,或者只是删除SysOuts。