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

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

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

<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-conolated-application-packaging.htm#JSDPG1000).

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
115
1

Ответы 1

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

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

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

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

Другие вопросы по теме