Инструмент Javapackager из командной строки в OSX?

javapackager и javafxpackager, похоже, не распознаются в командной строке для меня. Они не отображаются в терминале, даже после того, как я установил последнюю версию 1.8 SDK. (Даже 'echo $JAVA_HOME' кажется пустым, хотя java -version работает нормально.)

Если я загляну в /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin/, я увижу, что инструменты javapackager и javafxpackager присутствуют, но если я последу за /usr/libexec/java_home обратно к его происхождению в /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/ , от них нет никаких признаков.

Единственными другими обсуждениями, которые я смог найти на эту тему, были сообщение в блоге и список рассылки примерно полуторалетней давности: https://devreboot.wordpress.com/2014/11/26/java-desktop-app-packaging-automation/ http://lists.apple.com/archives/java-dev/2015/Nov/msg00009.html

Я понимаю, что OSX какое-то время не поставлялась с java «по умолчанию», но именно поэтому я надеялся выпустить свое приложение как автономный пакет с собственной виртуальной машиной. Будет ли стандартной процедурой обновлять мой профиль bash, чтобы явно указывать на инструмент? Что-то не так с моей личной настройкой или есть какой-то пробел в поддержке инструментов на OSX?


PS: я понимаю, что ниже есть более старая ветка на эту тему: Как лучше всего развернуть приложение JavaFX, создать JAR и автономные приложения, а также собственные установщики

Однако это описывает javapackager как файл .jar, и все, что у меня есть, не похоже на файл .jar. Я совершенно не понимаю, что мне с этим делать.

РЕДАКТИРОВАТЬ: Спасибо всем за советы - я думаю, что у меня достаточно информации, чтобы продолжить.


person Morgan Allen    schedule 04.06.2016    source источник
comment
можете ли вы выполнить их напрямую, например. /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin/javapackager? Их отсутствие на пути — это то, что вы могли бы исправить тогда. Эти инструменты, вероятно, являются просто сценарием оболочки, который запускает программу, скрытую в .jar, где-то еще. Неважно, что это такое, когда оно работает.   -  person zapl    schedule 05.06.2016
comment
Попробуйте $(/usr/libexec/java_home)/bin/javapackager -help.   -  person trashgod    schedule 05.06.2016
comment
Да, я сделал экспорт из bash, чтобы правильно установить JAVA_HOME, и теперь $JAVA_HOME/bin/javapackager дает мне эквивалент справочной страницы. Однако я озадачен тем, что это не было настроено по умолчанию при установке SDK. Я попытаюсь собрать реальный .dmg и посмотреть, что тогда произойдет.   -  person Morgan Allen    schedule 05.06.2016
comment
У вас может быть установлено несколько JRE; используйте $(/usr/libexec/java_home -version) для выбора.   -  person trashgod    schedule 05.06.2016


Ответы (1)


Вы можете попробовать этот суть для создания, упаковки и запуска тестовой установки клиентских приложений Java из ОС. Командная строка Х. Нет никаких гарантий, что это сработает для вас, это было просто то, что я придумал для личного развития давным-давно. Но содержащаяся там информация может помочь в разрешении местоположения инструмента упаковщика из командной строки, а также в выполнении других функций, связанных с упаковкой.

Ключевой момент для поиска (и использования) javapackager:

# select java version
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
$JAVA_HOME/bin/java -version
...
# make an executable jar file
$JAVA_HOME/bin/javapackager -createjar -srcdir . -appclass start.HelloWorldSwing -srcfiles HelloWorldSwing.jar -outdir . -outfile HelloWorld.jar

# package the jar and java runtime as a native application with installer
$JAVA_HOME/bin/javapackager -deploy -srcdir . -srcfiles HelloWorld.jar -outdir . -outfile HelloWorld -appclass start.HelloWorldSwing -native -name HelloWorld

Обратите внимание, что приведенное выше относится к упаковке приложения Swing. Упаковка приложения JavaFX будет использовать немного другие параметры командной строки для упаковщика.

Делать что-то таким образом из сценариев командной строки — явно старая школа, обычно maven или используется градиент.

Моим личным предпочтением было бы просто использовать Ant, но я думаю, что это лишь немного менее старая школа?

Да не то чтобы в этом что-то не так. Документация по использованию Ant для упаковки клиентских приложений Java предоставляется Oracle.

person jewelsea    schedule 05.06.2016
comment
Спасибо, я ценю пример кода. На самом деле я использую LibGDX для разработки игр, которая поставляется с утилитой настройки на основе gradle, но когда я просматриваю их документацию по созданию автономных приложений с собственной встроенной JVM, я возвращаюсь к средневековью — либо Launch4J, либо AppBundler, либо пэчворк. других сторонних решений. Моим личным предпочтением было бы просто использовать Ant, но я думаю, что это лишь немного менее старая школа? - person Morgan Allen; 06.06.2016