Mac OSX上Java 10辅助启动器的替代方案是什么?

时间:2018-05-21 11:09:30

标签: java maven maven-plugin maven-antrun-plugin java-10

我正在使用Maven在Windows和Mac上构建JavaFx项目。我正在使用Maven-ant-plugin构建我的包,我的build.xml包含几个fx:secondaryLauncher块。辅助启动器使您能够在app目录中创建其他可执行文件,这些可执行文件将启动除主类之外的类。

以下是官方文档中的示例:     

<fx:info title="Test Suite"/>

<fx:secondaryLauncher
    mainClass="samples.TestSuite"
    name="Suite Applications"/>
    shortcut="true"/>

<fx:secondaryLauncher name="Editor">
    <fx:bundleArgument arg="icon" value="../resources/editor.ico"/>
</fx:secondaryLauncher>

<fx:secondaryLauncher name="Spreadsheet">
    <fx:bundleArgument arg="icon" value="../resources/spreadsheet.ico"/>
</fx:secondaryLauncher>

当我从Java 8切换到Java 10时 - maven通过maven-ant-plugin创建的软件包停止在Mac OSX上创建辅助启动器。包装器似乎忽略了fx:secondaryLauncher块。

Windows程序包包含辅助启动程序,经过研究后我发现自Java 9发布以来 - “仅支持Windows和Linux应用程序的多个入口点”(完整文档在这里:https://docs.oracle.com/javase/9/deploy/self-contained-application-packaging.htm#JSDPG1000)。

有没有人知道二级发射器的替代品? 我宁愿最小化Windows和Mac OSX构建过程之间的差异(虽然这次可能无法;-)) 谢谢!

1 个答案:

答案 0 :(得分:0)

在研究了几种可能的解决方案之后,看起来以下解决方案是最好的解决方案:

  1. 指定&#34; strip-native-commands&#34;属性值为&#34; false&#34;在fx:hte fx的运行时块:部署xml块。这意味着您的应用程序包将在自包含的安装包中包含主要的java可执行文件。
  2. 而不是调用不再存在的辅助启动程序可执行文件 - 激活可执行文件直接调用的类(例如,运行java -cp。
  3. 这有几个好处:

    1. 对代码/ pom / build.xml的最小更改。
    2. 不依赖于用户安装的JRE,因为您在应用程序安装过程中使用了JRE。