Escribí un plugin para crear un archivo EXE y JAR para mi proyecto con la ayuda de Launch4J plugin. Sin embargo, en la ejecución del archivo EXE, me sale el error -
Error: Could not find or load main class
Sin embargo, corro el JAR Dando java -jar app.jar
, que funciona perfectamente.
Esta es mi sección plug-in
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.mycompany.tool.orchestrator.command.CommandHandler</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>com.akathist.maven.plugins.launch4j</groupId>
<artifactId>launch4j-maven-plugin</artifactId>
<version>1.7.16</version>
<executions>
<execution>
<id>l4j-clui</id>
<phase>package</phase>
<goals>
<goal>launch4j</goal>
</goals>
<configuration>
<headerType>console</headerType>
<outfile>target/apidast.exe</outfile>
<jar>${project.build.directory}/${artifactId}-${version}.jar</jar>
<errTitle>encc</errTitle>
<classPath>
<mainClass>com.mycompany.tool.orchestrator.command.CommandHandler</mainClass>
<!--Not sure what the next 2 lines are for -->
<addDependencies>true</addDependencies>
<preCp>anything</preCp>
</classPath>
<jre>
<minVersion>1.8.0_212</minVersion>
<!--Not sure what these opts are for -->
<opts>
<opt>-Djava.endorsed.dirs=./endorsed</opt>
</opts>
</jre>
<versionInfo>
<fileVersion>0.0.1.0</fileVersion>
<txtFileVersion>0.0.1.0</txtFileVersion>
<fileDescription>${project.name}</fileDescription>
<copyright>My Company.</copyright>
<productVersion>0.0.1.0</productVersion>
<txtProductVersion>${version}</txtProductVersion>
<productName>${project.name}</productName>
<originalFilename>apidast.exe</originalFilename>
<!-- internalName is mandatory -->
<internalName>apidast</internalName>
</versionInfo>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
El EXE está presente en mi carpeta de destino. Pero no puedo ejecutarlo, ya que dice que no se encuentra la clase principal (a pesar de añadir que en los detalles de plugins)
Trate de tun la acumulación experta usando el siguiente comando para cualquier proyecto de Maven.
MVN MVN paquete limpia o instalación limpia
Con respecto a Launch4j, tiene que ejecutar el siguiente comando.
mvn paquete limpio
Para más detalles sobre Launch4j, se puede comprobar el siguiente enlace. https://github.com/lukaszlenart/launch4j-maven-plugin/blob/master/src/main/resources/README.adoc
Pero en este proyecto, veo que está utilizando arranque primavera. Si mi interpretación es correcta, que desea crear un archivo exe de arranque primavera. Si este es el caso.
Se puede tratar de utilizar el siguiente cambio de launch4j y verificación.
<classPath>
<mainClass>org.springframework.boot.loader.JarLauncher</mainClass>
<addDependencies>true</addDependencies>
<preCp>anything</preCp>
</classPath>