No se puede especificar el atributo de manifiesto principal en Intellij

James Jordan Taylor

Estoy tratando de generar un jar ejecutable para la API en la que he estado trabajando. Pude depurar localmente usando localhost, pero cuando intento ejecutar el artefacto jar generado desde la línea de comando, aparece el error no main manifest attribute, in api.jar. He leído sobre las preguntas de SO relacionadas aquí y aquí , pero los cambios que recomendaron parecen no tener ningún efecto. La estructura de mi proyecto está a continuación:

estructura del proyecto

Cuando intento seleccionar la clase principal mientras navego por el asistente de artefactos, puedo resaltar la mainclase, pero el botón Aceptar está desactivado.

Botón OK desactivado

Finally, when I try to specify the main class manually in the manifest file by right clicking on the main class name and selecting Copy Reference and pasting the clipboard value in I get the error that it's an invalid main class:

Clase principal no válida

My actual main class is included below. Any help is appreciated.

package api

import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootApplication
open class KotlinSpringJpaPostgresqlApplication

fun main(args: Array<String>) {
    SpringApplication.run(KotlinSpringJpaPostgresqlApplication::class.java, *args)
}

As a final aside, my code is available here if you want to try and run it locally.

phisch

You need to append Kt with an upper case K to the filename that holds your main method. This is required because of the way Kotlin compiles to Java Bytecode. The fun main() function in Kotlin is not attached to any class, but Java always requires a class and does not support classless functions.

Tenga en cuenta que el nombre del archivo es importante aquí (en su pregunta es api.kt). Recomendaría simplemente crear un archivo Main.kty mover su función principal allí. Se compilará en una clase MainKt, a la que debe hacer referencia desde su manifiesto.

Esperaría que el proceso de compilación sobrescriba su archivo MANIFEST.MF creado manualmente. ¿Ha descomprimido el archivo jar final y ha inspeccionado que MANIFEST.MF es como esperaba que fuera?

En lugar de escribir el MANIFEST.MF usted mismo, deje que su sistema de compilación lo maneje por usted:

Para el estómago:

<configuration>
    <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <mainClass>api.KotlinSpringJpaPostgresqlApplicationKt</mainClass>
        </manifest>
    </archive>
</configuration>

Para Gradle:

jar {
     manifest {
        attributes 'Main-Class': 'api.KotlinSpringJpaPostgresqlApplicationKt'
    }
    from { 
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 
    }
}

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Maven: sin atributo de manifiesto principal, en target / xx.jar, no se puede ejecutar el archivo jar

Ningún atributo de manifiesto principal en el archivo .jar

Sin atributo manifiesto principal: IntelliJ

No se pudo cargar el atributo de manifiesto de clase principal mientras se ejecutaba java -jar

IntelliJ Maven JAR "No hay error de atributo de manifiesto principal"

OpenShift: ningún atributo principal de manifiesto en el proyecto maven jar

"Sin atributo de manifiesto principal" en ----. Jar Netbeans

Sin principal atributo de manifiesto, en server.jar

Implementar el archivo .war en el contenedor de Docker: sin atributo de manifiesto principal en app.war

No se puede obtener el valor del atributo usando JAXB (para el atributo en la clase principal)

¿Por qué no se ha podido cargar el atributo de manifiesto de clase principal desde un archivo JAR?

SecurityException durante la ejecución del archivo jnlp (falta el atributo de manifiesto de permisos requeridos en el jar principal)

Error de Heroku: sin atributo de manifiesto principal, en el archivo JAR para la aplicación de arranque de primavera

No se puede actualizar identifierUris en el archivo de manifiesto de la aplicación de Azure AD

No se puede establecer la clave de la solución de conferencia en el archivo de manifiesto

JMH sin atributo de manifiesto principal

JMH sin atributo de manifiesto principal

maven: ningún atributo principal de manifiesto

JMH sin atributo de manifiesto principal

No se puede actualizar el atributo en las clases de Python

La fusión del manifiesto falló con varios errores, Error: herramientas: reemplazar especificado, pero no se especificó un valor nuevo en el manifiesto principal de la aplicación

Creando Jar con Intellij 2016 - Sin atributo manifiesto principal

No se puede cargar el complemento de Office en Word en línea cuando se establece el conjunto de requisitos en el archivo de manifiesto

No se puede especificar el conjunto de datos de entrada en el panel brillante

ACCESS_FINE_LOCATION SecurityException a pesar de especificar el permiso en el archivo de manifiesto

No se puede especificar el campo 'enrutamiento' en el índice masivo de Elasticsearch (routing_missing_exception)

No se puede encontrar una clase de actividad explícita, incluso cuando declaro la intención en el manifiesto

No se puede encontrar una clase de actividad explícita, incluso cuando declaro la intención en el manifiesto

Cambiar un valor de atributo en un manifiesto después de copiarlo de otro manifiesto en el script ANT

TOP Lista

CalienteEtiquetas

Archivo