2016-06-04 3 views
1

javapackager и javafxpackager, похоже, не распознаются в командной строке для меня. Они не отображаются в терминале, даже после того, как я установил последний 1,8 SDK. (Даже «echo $ JAVA_HOME», кажется, рисует пробел, хотя java -версия, похоже, работает нормально.)Инструмент Javapackager из командной строки на OSX?

Если я смотрю под /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 не пришел с Явы «по умолчанию 'в течение некоторого времени, но это почему-то, что я надеялся выпустить мое приложение как автономный пакет с его собственной виртуальной машиной. Будет ли стандартная процедура обновлять мой профиль bash, чтобы явно указать на инструмент? Есть ли что-то неловкое в моей личной установке, или есть некоторый пробел в поддержке инструмента на OSX?


PS: Я понимаю, что есть старая нить ниже на этой теме: What is the best way to deploy JavaFX application, create JAR and self-contained applications and native installers

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

EDIT: Спасибо всем за советы - я думаю, что у меня есть достаточно информации для продолжения.

+0

Вы можете выполнить их непосредственно, например. '/ Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Содержание/Главная/бен/javapackager'? Их не значит, что вы можете это исправить. Эти инструменты, вероятно, всего лишь сценарий оболочки, который запускает программу, скрытую в .jar где-то в другом месте. Меня не волнует, что это такое, когда оно работает. – zapl

+1

Попробуйте '$ (/ usr/libexec/java_home)/bin/javapackager -help'. – trashgod

+0

Да, я сделал экспорт bash, чтобы правильно установить JAVA_HOME, а $ JAVA_HOME/bin/javapackager теперь дает мне эквивалентную man-страницу.Я озадачен тем, что это не было настроено по умолчанию, когда был установлен SDK. Я постараюсь собрать фактическое .dmg и посмотреть, что будет потом. –

ответ

2

Вы можете попробовать это gist for building, packaging and running a test install on Java client apps из командной строки OS X. Нет гарантий, что это сработает для вас, это было что-то, что я давно взломал для целей личного развития. Но информация в нем может помочь в разрешении местоположения инструмента пакета в командной строке, а также при выполнении других связанных с упаковкой функций.

Ключевая часть для определения местоположения (и использования) в 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, но я думаю, что это только немного менее старая школа?

Да, не то, что с этим что-то не так. Documentation on using Ant to package java client applications предоставляется Oracle.

+0

Спасибо, я ценю образец кода. Я фактически использую LibGDX для разработки игр, в котором есть утилита настройки на основе градиента, но когда я просматриваю свою документацию по созданию автономных приложений со своей встроенной JVM, она возвращается в средние века: Launch4J или AppBundler или пэчворк других сторонних решений. Мое личное предпочтение было бы просто использовать Ant, но я думаю, что это только немного менее старая школа? –

Смежные вопросы