Конвертировать Java в .app файл для MacOSX, используя JarBundler

Все, что я пытаюсь сделать, - это преобразовать простую Java-программу в файл MacOSX .app, чтобы я мог распространять ее как простой исполняемый файл.

Я прочитал повсюду, и все говорят одно и то же:

Использовать Xcode - насколько я могу судить, Xcode больше не поддерживает сборки Java

Используйте Jar Bundler - все учебники устарели, и это не работает. Когда я бегу: java -jar jarbundler-2.0.0.jar

Консоль возвращает «нет основного атрибута манифеста в jarbundler-2.0.0.jar»

Если я прав, это будет неудачей для любого, кто упаковал файл JAR, верно? Но я пытался загрузить его с других сайтов и других версий, но я получаю то же самое.

Они говорят, что вы можете просто создать каталоги и файлы самостоятельно, а затем переименовать вашу папку в .app, а затем запустить на нем команду или что-то в этом роде, но это сложно, так как я точно не знаю, как создать файл info.plist ... если вы хотите сделать это таким образом, лучший веб-сайт, который я нашел до сих пор, это:Параметры развертывания Java для OSX

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

Спасибо за помощь в продвижении!

Решение

РЕДАКТИРОВАТЬ: Я понял! После 7 или 8 часов поиска и чтения все работает. Поскольку я новичок в этом, я собираюсь опубликовать все, что я узнал, чтобы спасти других, которые сталкиваются с той же проблемой, от прохождения боли. Я отказался от метода «сделай сам» и вернулся к JarBundler. Если кто-то еще читает это, и они ничего не знают о ANT, вот что я сделал: Скачайте JarBundler, я получил мой отсюда:Mac OS X JarBundler ANT Задача и следуйте инструкциям там.

Когда вы загрузите его, поместите файл jarbundler-2.2.0.jar здесь:

/ USR / доли / муравей / Библиотека

вам может понадобиться запустить команду, чтобы переместить ее, что-то вроде:

sudo mv jarbundler-2.2.0.jar ~ /../../ usr / share / ant / lib / jarbundler-2.2.0.jar

Как я уже сказал, я все еще учусь, но это сработало для меня.

Убедитесь, что вы переместили правильный jarbundler, вот где я столкнулся с проблемами, я переместил всю папку, а не внутренний файл .jar, поэтому убедитесь, что вы переместили .jar, который находится внутри папки zip, которую вы скачали, а не все в противном случае при его сборке вы получите сообщение об ошибке, похожее на error: 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's Image Editor"
        mainclass="ImageEditorGUI" 
        jar="ApolloIE.jar"
        icon="Aperture.icns" />

</target>

</project>

Оттуда (кстати, я использую Macbook Pro) все, что вам нужно сделать, это запустить командную строку из этой папки:

муравейник

и он должен создать файл .app в папке с именем release. Итак, подведем итог: все, что вам нужно, это ваш файл .jar и файл build.xml в той же папке, а затем выполните команду: ant bundle (или как бы вы ни назвали свою цель в файле build.xml, я назвал его bundle)

Удачи, надеюсь, это кому-нибудь поможет.

Если кому-то интересно, я взял Info.plist, сгенерированный JarBundler, и поместил его в созданный мной каталог, и он заработал! Так что это была проблема, я просто не знал, как правильно ее отформатировать ... вот она:Info.plist

Ответы на вопрос(3)

Ваш ответ на вопрос