这是我的简单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构建时正在创建安装程序。
这是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>
答案 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。