template intellij java jar intellij-idea executable-jar

java - template - Crear un contenedor excutable en IntelliJ IDEA



intellij file template variables (3)

Estoy usando IntelliJ IDEA 12.1.3. Tengo un módulo y estoy tratando de convertirlo en un tarro según los pasos dados aquí . Construí el archivo jar y moví el archivo jar a D: /. Si intento ejecutar este jar, recibo el siguiente mensaje:

Error al cargar el atributo de manifiesto de clase principal del contenedor

Si lo ejecuto usando java -classpath jar com.code.TestCase , funciona perfectamente.

¿Por qué pasó esto? Creé el jar usando IntelliJ IDEA. En ese contenedor tiene todo el código para todas las bibliotecas externas que agregué.

En el archivo de manifiesto src:

Manifest-Version: 1.0 Main-Class: com.code.TestCase

pero el contenido del archivo manifiesto del contenedor es:

Manifest-Version: 1.0 Build-Jdk: 1.6.0 Built-By: ubuntu Created-By: Apache Maven Archiver-Version: Plexus Archiver Name: org.apache.log4j Implementation-Vendor: "Apache Software Foundation" Implementation-Title: log4j Implementation-Version: 1.2.15

¿Por qué Main-Class no se agrega en el archivo jar MANIFEST.MF, pero tiene Main-Class en src?



Una de las reglas importantes es que el archivo Manifiesto debe terminar con una nueva línea o un carácter de retorno de carro. Si no está allí, agregue ahora.


He experimentado el mismo problema y encontré una solución y / o error en la forma en que Intellij rellena automáticamente la ruta del manifiesto.

INTELLIJ UI

Al crear un artefacto para crear archivos jar, IntelliJ rellena automáticamente la ruta donde se encuentra el manifiesto actual.

es decir, después de elegir Main-Class en la página de creación de artefactos, Intellij agregará automáticamente la siguiente ruta / src / java / META-INF / MANIFEST.MF. Por algún motivo, el comando de compilación nunca toma el archivo MANIFEST.MF mencionado. Crea uno desde el principio sin la definición de clase principal que resulta en el "error al cargar Main-Class"

Si usa la IU de IntelliJ para crear artefactos de jar; eliminó la ruta de autopoblación al cambiarla a /$PROJECT_DIR/src/ y hacer clic en Aceptar.

Ejemplo de lo que parece por defecto:

Ahora esto es lo que debería verse después del cambio:

ARREGLO MANUAL PARA INGRESAR EL ARCHIVO MANIFEST.MF CORRECTO

En el proyecto IntelliJ, abra .idea / artifacts / _jar.xml

Asegúrate de que contenga

<element id="directory" name="META-INF"> <element id="file-copy" path="$PROJECT_DIR$/src/META-INF/MANIFEST.MF" /> </element>

Es posible que deba volver a cargar intelliJ una vez que haga esto para que se dé cuenta de los cambios en el archivo .xml

Para mí sucedió en proyectos maven donde existe una estructura diferente (es decir, src / main / java / ..).

Estoy usando OSX 10.9.2 con IntelliJ versión 12.1.6

Espero que ayude.