Какая альтернатива вторичной программе запуска Java 10 на Mac OSX? - PullRequest
0 голосов
/ 21 мая 2018

Я использую Maven для создания проекта JavaFx на Windows и Mac.Я использую Maven-ant-plugin для сборки своего пакета, и мой build.xml содержит несколько блоков fx: secondLauncher. Вторичные средства запуска позволяют вам создавать дополнительные исполняемые файлы внутри каталога приложения, которые будут запускать классы, отличные от вашего основного класса.

Вот пример из официальной документации:

<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: primaryLauncher.

Пакет Windows содержит вторичные средства запуска, и после небольшого исследования я обнаружил, что с момента выпуска Java 9 - «Несколько точек входа поддерживаются только для приложений Windows и Linux» (полноедокументация здесь: https://docs.oracle.com/javase/9/deploy/self-contained-application-packaging.htm#JSDPG1000).

Есть ли у кого-нибудь идеи о хорошей альтернативе вторичным программам запуска? Я бы предпочел минимизировать различия между процессом сборки Windows и Mac OSX (хотя, возможно, в этот раз это не удастся;-) ) Спасибо!

1 Ответ

0 голосов
/ 06 июня 2018

После изучения нескольких возможных решений, похоже, что следующее решение является лучшим:

  1. задает атрибут "strip-native-команды" со значением "false" в блоке fx: runtimehte fx: развернуть блок xml.это означает, что ваш пакет приложения будет включать основные исполняемые файлы Java в ваш автономный пакет восстановления.
  2. Вместо того, чтобы вызывать исполняемые файлы вторичного запуска, которые больше не существуют - активируйте классы, которые исполняемые файлы вызывали напрямую (например, запуск Java-cp.

это имеет несколько преимуществ:

  1. Минимальные изменения в коде / pom / build.xml.
  2. Нет зависимости от пользователяустановлен JRE, потому что вы используете JRE, установленный как часть установки вашего приложения.
...