Converter Java para o arquivo .app para MacOSX usando JarBundler

Tudo o que estou tentando fazer é converter um programa java simples em um arquivo macOSX .app para que eu possa distribuí-lo como um arquivo executável simples.

Eu li em todo o lugar e todo mundo diz as mesmas coisas:

Use o Xcode - Até onde eu sei, o Xcode não suporta mais o Java Builds

Use Jar Bundler - Todos os tutoriais parecem estar desatualizados e isso não funciona. Quando executo: java -jar jarbundler-2.0.0.jar

O console retorna "nenhum atributo de manifesto principal no jarbundler-2.0.0.jar"

Se eu estiver certo, isso seria uma falha em quem empacotou o arquivo jar certo? Mas eu tentei baixá-lo de outros sites e outras versões, mas eu recebo a mesma coisa.

Eles dizem que você pode apenas criar os diretórios e arquivos e, em seguida, renomear sua pasta para .app e, em seguida, executar um comando sobre ele ou algo assim, mas isso é complicado, pois não sei exatamente como criar um arquivo info.plist ... Se você quiser fazer assim, o melhor site que encontrei até agora é esse:Opções de Implantação Java para o OSX

Eu compilei meu código em um arquivo .jar, eu tenho um ícone e tudo, tudo que eu preciso fazer é empacotá-lo de alguma forma em um arquivo .app.

Obrigado pela ajuda antecipadamente!

Solução

EDIT: eu entendi! Depois de 7 ou 8 horas de pesquisa e leitura, funciona. Como sou novo nisso, vou postar tudo o que aprendi para salvar os outros que enfrentam o mesmo problema de passarem pela dor. Eu desisti do método de fazer você mesmo e voltei para o JarBundler. Se alguém mais está lendo isso e eles não sabem nada sobre a ANT, aqui está o que eu fiz: Baixe o JarBundler, eu tenho o meu aqui:Tarefa ANT do Mac OS X JarBundler e siga as instruções lá.

Ao baixá-lo, coloque o arquivo jarbundler-2.2.0.jar aqui:

/ usr / share / form / lib

você pode ter que executar um comando para movê-lo, algo como:

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

como eu disse, ainda estou aprendendo, mas isso funcionou para mim.

Certifique-se de ter movido o jarbundler certo, é aqui que eu tive problemas, movi a pasta inteira, em vez do arquivo .jar interno, então certifique-se de mover o .jar que está dentro do zip da pasta que você baixou, não a coisa toda caso contrário, quando você for construí-lo, receberá um erro dizendo algo como error: taskdef class net.sourceforge.jarbundler.JarBundler não pôde ser localizado.

Então você precisa compilar seu código em um arquivo .jar (existem dois tipos, um é como um .zip e o outro é um executável). Você quer um arquivo JAR normal, NÃO executável, então para isso você precisa primeiro compilar. seu código para obter arquivos .class, abra um prompt de comando e siga as instruções aqui:Crie um arquivo Jar O comando será algo como isto:

jar cf myName.jar * .class

Depois de ter seu arquivo jar, você precisa criar um arquivo .xml na mesma pasta e precisa ser chamado build.xml. Edite-o com um editor de texto. Siga as instruções no link acima para criá-lo. Vai parecer algo assim:

//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>

De lá (estou usando um MacBook Pro, a propósito) tudo que você precisa fazer é executar uma linha de comando a partir dessa pasta:

pacote de formigas

e deve criar um arquivo .app em uma pasta chamada release. Então, para resumir: tudo o que você precisa é do seu arquivo .jar e do arquivo build.xml na mesma pasta e, em seguida, execute o comando: ant bundle (ou qualquer nome que você tenha nomeado no arquivo build.xml, denominei bundle)

Boa sorte, espero que isso ajude alguém lá fora.

Se alguém está se perguntando, peguei o Info.plist que foi gerado pelo JarBundler e coloquei no diretório que estava fazendo e funcionou! Então esse era o problema, eu não sabia como formatá-lo direito ... aqui está:Info.plist

questionAnswers(3)

yourAnswerToTheQuestion