Преобразование Java в файл .app для MacOSX с использованием JarBundler
Все, что я пытаюсь сделать, - это преобразовать простую java-программу в файл macOSX.app, чтобы я мог распространять ее как простой исполняемый файл.
Я читал повсюду, и все говорят то же самое:
- Использовать Xcode. Насколько я могу судить, Xcode больше не поддерживает Java Builds
-
Использовать Jar Bundler. Все уроки кажутся устаревшими, и это не работает. Когда я запускаю:
java -jar jarbundler-2.0.0.jar
Консоль возвращает "нет основного атрибута манифеста в jarbundler-2.0.0.jar"
Если я прав, это будет ошибкой для тех, кто правильно упаковал файл jar? Но я попытался загрузить его с других веб-сайтов и других версий, но я получаю то же самое.
-
Говорят, вы можете просто создать каталоги и файлы самостоятельно, а затем переименовать свою папку в .app, а затем запустить команду над ней или что-то подобное, но это сложно, так как я не знаю точно, как создать информацию .plist... если вы хотите сделать это таким образом, лучший веб-сайт, который я нашел до сих пор, - это: Параметры развертывания Java для OSX
Я скомпилировал свой код в файл .jar, у меня есть значок и все, все, что мне нужно сделать, это как-то упаковать его в файл .app.
Спасибо за помощь заранее!
Решение
EDIT: Я понял! После 7 или 8 часов поиска и чтения он работает. Поскольку я новичок в этом, я собираюсь опубликовать все, что я узнал, чтобы спасти других, которые сталкиваются с одной и той же проблемой, переживая боль. Я сдался, сделав это самостоятельно, и вернулся к ДжарБундлеру. Если кто-то еще читает это, и они ничего не знают о ANT, вот что я сделал: Загрузите JarBundler, я получил отсюда: Mac OS X JarBundler ANT Задача и следуйте инструкциям.
Когда вы его загрузите, поместите файл jarbundler-2.2.0.jar здесь:
/USR/доли/ant/Библиотека
вам может потребоваться запустить команду для ее перемещения, например:
sudo mv jarbundler-2.2.0.jar ~/../../usr/share/ ant/lib/jarbundler-2.2.0.jar
как я уже сказал, я все еще учился, но это сработало для меня.
Убедитесь, что вы переместили правый jarbundler, вот где я столкнулся с проблемами, я переместил всю папку, а не внутренний .jar файл, поэтому убедитесь, что вы перемещаете .jar, который находится в папке zip, которую вы скачали, а не все, иначе, когда вы идете построить его, вы получите сообщение об ошибке: taskdef class net.sourceforge.jarbundler.JarBundler не найден.
Затем вам нужно скомпилировать свой код в файл .jar(есть два типа: один - как .zip, а другой - исполняемый файл). Вы хотите, чтобы обычный JAR файл был НЕ выполнимым, поэтому для этого сначала необходимо скомпилировать ваш код для получения файлов .class, затем откройте командную строку и следуйте инструкциям здесь: Создать файл Jar Команда будет выглядеть как-то например:
jar cf myName.jar *.class
Как только у вас есть файл jar, вам нужно создать XML файл в той же папке и его нужно вызвать build.xml. Отредактируйте его с помощью текстового редактора. Следуйте инструкциям по ссылке выше, чтобы создать ее. Он будет выглядеть примерно так:
//build.xml
<project name="MyProject">
<taskdef name="jarbundler"
classname="net.sourceforge.jarbundler.JarBundler" />
<target name="bundle">
<jarbundler dir="release"
name="Apollo Image Editor"
mainclass="ImageEditorGUI"
jar="ApolloIE.jar"
icon="Aperture.icns" />
</target>
</project>
Оттуда (кстати, я использую Macbook Pro) все, что вам нужно сделать, - запустить командную строку из этой папки:
ant bundle
и он должен создать файл .app в папке с именем release. Итак, подведем итог:
все, что вам нужно, это ваш файл .jar и файл build.xml в той же папке, а затем выполните команду:
ant (или то, что вы назвали своей целью в файле build.xml, я назвал его пакетом)
Удачи, надеюсь, что это поможет кому-то там.
Если кто-то задается вопросом, я взял Info.plist, который был сгенерирован JarBundler, и поместил его в каталог, который я делал, и это сработало! Так вот в чем проблема: я просто не знал, как правильно ее отформатировать... вот он: Info.plist
Ответы
Ответ 1
В Mac OS X пакет приложений - это каталог с именем, заканчивающимся на .app
и содержащий ресурсы, используемые приложение. Эта игра является примером, который строит пакет in situ, используя ant
построить script. Дополнительные ссылки цитируются здесь.
Ответ 2
Если вы хотите использовать Oracle Java вместо Apple с прекращенной Java, вы должны использовать Java Application Bundler вместо JarBundler.
См. также эти ответы:
Ответ 3
Работал для меня! По какой-то причине я не мог поместить файл jarbundler .jar
в область Ant, но вместо этого должен был явно указать на него из файла build.xml(я положил его в <projectRoot>/jarbundler/jarbundler-2.2.0.jar
). Мой файл build.xml выглядел так:
<?xml version="1.0" encoding="UTF-8"?>
<project name="TripleWhammy" default="default" basedir=".">
<taskdef name="jarbundler"
classname="net.sourceforge.jarbundler.JarBundler"
classpath="jarbundler/jarbundler-2.2.0.jar" />
<target name="bundle">
<jarbundler dir="."
name="Triple Whammy"
mainclass="org.bigclue.TripleWhammy"
jar="target/triple-whammy-1.0-jar-with-dependencies.jar"
icon="triple-whammy.icns"/>
</target>
</project>
Это создало "Triple Whammy.app" в моем каталоге проектов. Мой значок выглядит хорошо. Сладкое.
Теперь, когда я создал простую распределяемую кубик .app
, время для создания чего-то удивительного...
(Mac OS X 10.6.8, Java 1.6.0_51, Ant 1.8.4, построил мой .jar, используя Maven 3.0.4 и его "сборку" версии 2.4).