Convertir Java a un archivo .app para MacOSX usando JarBundler

Todo lo que estoy tratando de hacer es convertir un programa Java simple en un archivo .app macOSX para poder distribuirlo como un archivo ejecutable simple.

He leído todo el lugar y todos dicen lo mismo:

Use Xcode: por lo que puedo decir, Xcode ya no es compatible con Java Builds

Use Jar Bundler: todos los tutoriales parecen estar desactualizados y no funciona. Cuando ejecuto: java -jar jarbundler-2.0.0.jar

La consola devuelve "ningún atributo de manifiesto principal en jarbundler-2.0.0.jar"

Si tengo razón, esto sería un error para quien haya empaquetado el archivo jar, ¿verdad? Pero he intentado descargarlo de otros sitios web y otras versiones, pero obtengo lo mismo.

Dicen que puedes crear los directorios y los archivos tú mismo y luego cambiar el nombre de tu carpeta a .app y luego ejecutar un comando o algo así, pero esto es complicado porque no sé exactamente cómo crear un archivo info.plist ... Si quieres hacerlo de esta manera, el mejor sitio web que he encontrado hasta ahora es este:Opciones de implementación de Java para OSX

He compilado mi código en un archivo .jar, tengo un icono y todo, todo lo que necesito hacer es empaquetarlo de alguna manera en un archivo .app.

¡Gracias por la ayuda por adelantado!

Solución

EDIT: ¡Lo tengo! Después de 7 u 8 horas de búsqueda y lectura funciona. Ya que soy nuevo en esto, voy a publicar todo lo que aprendí para salvar a otros que tienen el mismo problema de pasar por el dolor. Renuncié al método de hacerlo usted mismo y volví a JarBundler. Si alguien más está leyendo esto y no sabe nada sobre ANT, esto es lo que hice: descargar JarBundler, tengo el mío desde aquí:Tarea de Mac OS X JarBundler ANT y siga las instrucciones allí.

Cuando lo descargues, coloca el archivo jarbundler-2.2.0.jar aquí:

/ usr / share / ant / lib

puede que tenga que ejecutar un comando para moverlo, algo como:

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

Como dije, todavía estoy aprendiendo, pero esto funcionó para mí.

Asegúrate de mover el jarbundler correcto, aquí es donde me encontré con problemas, moví toda la carpeta, en lugar del archivo .jar interno, así que asegúrate de mover el .jar que está dentro de la carpeta zip que descargaste, no todo. De lo contrario, cuando lo construyas, obtendrás un error que dice algo como error: taskdef class net.sourceforge.jarbundler.JarBundler no se pudo encontrar.

Luego, debe compilar su código en un archivo .jar (hay dos tipos, uno es como un .zip y el otro es un ejecutable) Usted desea un archivo JAR normal, NO ejecutable, por lo que primero debe compilarlo. su código para obtener archivos .class, luego abra un símbolo del sistema y siga las instrucciones aquí:Crear un archivo jar El comando se verá algo como esto:

jar cf myName.jar * .class

Una vez que tenga su archivo jar, debe crear un archivo .xml en la misma carpeta y debe llamarse build.xml. Edítalo con un editor de texto. Siga las instrucciones en el enlace de arriba para crearlo. Se verá algo como esto:

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

Desde allí (por cierto, estoy usando un Macbook Pro) todo lo que tienes que hacer es ejecutar una línea de comando desde esa carpeta:

paquete de hormigas

y debe crear un archivo .app en una carpeta llamada release. Para resumir: todo lo que necesita es su archivo .jar y el archivo build.xml en la misma carpeta, y luego ejecute el comando: ant bundle (o como se llame a su destino en el archivo build.xml, lo nombré bundle)

Buena suerte, espero que esto ayude a alguien por ahí.

Si alguien se pregunta, tomé el Info.plist generado por el JarBundler y lo puse en el directorio que estaba haciendo y ¡funcionó! Entonces ese era el problema, simplemente no sabía cómo formatearlo correctamente ... aquí está:Info.plist

Respuestas a la pregunta(3)

Su respuesta a la pregunta