Java Launch4j Maven插件版本2.0.1无法找到或加载主类

Java Launch4j Maven插件版本2.0.1无法找到或加载主类,java,spring-boot,maven,exe,launch4j,Java,Spring Boot,Maven,Exe,Launch4j,首先,我在互联网上以及在stackoverflow上读了很多关于这个问题的帖子,但什么都没有解决,我决定问问自己 我正在尝试使用Launch4j maven插件为我的spring boot应用程序创建一个简单的exe。生成的exe无法找到主类。我在命令行中遇到以下错误: Error: Could not find or load main class com.XXX.scheduler.SchedulerApplication Caused by: java.lang.ClassNotFound

首先,我在互联网上以及在stackoverflow上读了很多关于这个问题的帖子,但什么都没有解决,我决定问问自己

我正在尝试使用Launch4j maven插件为我的spring boot应用程序创建一个简单的exe。生成的exe无法找到主类。我在命令行中遇到以下错误:

Error: Could not find or load main class com.XXX.scheduler.SchedulerApplication
Caused by: java.lang.ClassNotFoundException: com.XXX.scheduler.SchedulerApplication
下面是我的pom.xml,我在其中尝试了多种组合来实现这一点。 注意:只使用罐子就可以了

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/>
        <!-- lookup parent from repository -->
    </parent>
    <groupId>com.XXX</groupId>
    <artifactId>scheduler</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>scheduler</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <!-- <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
    </properties> -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.akathist.maven.plugins.launch4j</groupId>
                <artifactId>launch4j-maven-plugin</artifactId>
                <version>2.0.1</version>
                <executions>
                    <execution>
                        <id>l4j-clui</id>
                        <phase>package</phase>
                        <goals>
                            <goal>launch4j</goal>
                        </goals>
                        <configuration>
                            <dontWrapJar>true</dontWrapJar>
                            <headerType>console</headerType>
                            <!-- <headerType>gui</headerType> -->
                            <!-- <jar>${project.build.directory}/scheduler-0.0.1-SNAPSHOT.jar</jar> -->
                            <jar>${artifactId}-${version}.jar</jar>
                            <!-- <jar>${project.build.directory}/${artifactId}-${version}.jar</jar> -->
                            <outfile>${project.build.directory}/test.exe</outfile>
                            <downloadUrl>http://java.com/download</downloadUrl>
                            <classPath>
                                <mainClass>com.XXX.scheduler.SchedulerApplication</mainClass>
                                <!-- <mainClass>SchedulerApplication</mainClass> -->
                                <!-- <mainClass>com/XXX/scheduler/SchedulerApplication</mainClass> -->
                                <addDependencies>false</addDependencies>
                                <preCp>anything</preCp>
                            </classPath>
                            <!-- <icon>src/main/resources/icon/application.ico</icon> -->
                            <jre>
                                <!-- <path>../jdk15</path> -->
                                <!-- <jdkPreference>preferJdk</jdkPreference> -->
                                <jdkPreference>preferJre</jdkPreference>
                                <minVersion>11</minVersion>
                                <!-- <minVersion>1.8.0_212</minVersion> -->
                                <initialHeapSize>256</initialHeapSize>
                                <maxHeapSize>3000</maxHeapSize>
                                <!-- <minVersion>1.7.0</minVersion> -->
                                <!-- <minVersion>1.6.0</minVersion> -->
                                <!-- <jdkPreference>preferJre</jdkPreference> -->
                            </jre>
                            <versionInfo>
                                <fileVersion>1.0.0.0</fileVersion>
                                <txtFileVersion>${project.version}</txtFileVersion>
                                <fileDescription>${project.name}</fileDescription>
                                <copyright>2021 XXX.com</copyright>
                                <productVersion>1.0.0.0</productVersion>
                                <txtProductVersion>1.0.0.0</txtProductVersion>
                                <productName>${project.name}</productName>
                                <companyName>XXX.com</companyName>
                                <internalName>rfrcscheduler</internalName>
                                <originalFilename>test.exe</originalFilename>
                            </versionInfo>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

4.0.0
org.springframework.boot
spring启动程序父级
2.4.5
com.XXX
调度程序
0.0.1-快照
调度程序
SpringBoot的演示项目
11
org.springframework.boot
弹簧靴起动器石英
org.springframework.boot
弹簧靴开发工具
运行时
真的
org.projectlombok
龙目
真的
org.springframework.boot
弹簧起动试验
测试
org.junit.vintage
朱尼特老式发动机
org.springframework.boot
springbootmaven插件
org.projectlombok
龙目
com.akatist.maven.plugins.launch4j
启动4J maven插件
2.0.1
l4j俱乐部
包裹
发射4J
真的
安慰
${artifactId}-${version}.jar
${project.build.directory}/test.exe
http://java.com/download
com.XXX.scheduler.SchedulerApplication
假的
任何东西
首选
11
256
3000
1.0.0.0
${project.version}
${project.name}
2021 XXX.com
1.0.0.0
1.0.0.0
${project.name}
三十、 com
rfrcscheduler
test.exe

好的,在对stackoverflow本身进行更多搜索之后,我从下面的帖子中找到了答案。

问题是生成的“
test.exe
”找不到主类,答案是它不应该指向主类,而是应该查找
jar启动器类

我已经按照帖子中的建议更新了maven plugin
标签,它的效果非常好。我希望这有帮助

<classPath>
    <mainClass>org.springframework.boot.loader.JarLauncher</mainClass>
    <addDependencies>true</addDependencies>
    <preCp>anything</preCp>
</classPath>

org.springframework.boot.loader.JarLauncher
真的
任何东西