当前位置: 首页 > 知识库问答 >
问题:

Spring Boot maven插件找不到主类,无法执行java

罗淮晨
2023-03-14

我有一个多模块mavenSpring启动maven项目。其中一个子模块是一个存根(Spring启动应用程序),我想在myRealApp集成测试期间启动并停止它。

Parent Pom
|   
|----myRealApp module(spring boot app)
|----stub-of-some-remote-rest-api module(This is also a spring-boot app)

这是模块myRealApp中pom文件的外观。它也有所有的集成测试。它试图在集成测试前阶段启动存根模块。但当我在子模块目录中运行maven goal时,会出现错误:

 mvn integration-tests -X

错误:无法找到或加载主类io。大摇大摆我的浴缸

组织。阿帕奇。专家生命周期。LifecycleExecutionException:无法执行目标组织。springframework。boot:spring boot maven插件:1.5.8。发布:在项目上运行(启动):无法执行java

在调试模式下,我可以看到工作目录设置正确。

myRealApp的Pom:

         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>${spring.boot.mainclass}</mainClass>
            </configuration>
            <executions>
                <execution>
                    <configuration>
                        <workingDirectory>${project.parent.basedir}/module-of-my-stub/src/main/java</workingDirectory>
                        <mainClass>io.swagger.MyStub</mainClass>
                    </configuration>
                    <id>start-boot</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
                <execution>
                    <id>stop-boot</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
                <execution>
                    <goals>
                        <goal>build-info</goal>
                    </goals>
                </execution>
            </executions>

        </plugin>

也许我不允许在单个执行中设置workingDirectory,或者引用其他模块?

存根就像我的应用程序所依赖的远程rest服务一样,我在开发过程中使用了它,因为实际的远程服务的测试环境不可靠,并且有一半时间处于停机状态。所以决定在集成测试中也使用它。

共有2个答案

邹京
2023-03-14

springboot:run仅适用于打包springboot应用程序的项目。实现这一点的最佳选择:您需要使用exec maven插件:exec,确保async设置为true。看看https://www.mojohaus.org/exec-maven-plugin/examples/example-exec-for-java-programs.html看看该如何配置插件。

归鹤龄
2023-03-14

为了整合针对该问题的一些评论,这些评论基本上遵循了另一个答案中的建议。

关键是将classesDirectoryspring boot maven plugin:rungoal设置为指向另一个项目下的target\classes目录。

  <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <mainClass>${spring.boot.mainclass}</mainClass>
        </configuration>
        <executions>
            <execution>
                <id>start-stub</id>
                <configuration>
                    <arguments>
                        <argument>--server.port=8090</argument>
                    </arguments>
                    <mainClass>io.swagger.Stub</mainClass>
                    <classesDirectory>../my-stub/target/classes</classesDirectory>
                </configuration>
                <goals>
                    <goal>start</goal>
                </goals>
                <phase>pre-integration-test</phase>
            </execution>

            <execution>
                <goals>
                    <goal>build-info</goal>
                </goals>
            </execution>
        </executions>
  </plugin>
 类似资料:
  • 我为我的服务器找到了一个非常好的插件,但它已经死了,作者没有更新它,所以我更新了它,但当我把插件放在我的插件文件夹中时,它没有工作。这是cmd错误]:无法加载“plugins\BossBarMessage”。jar'在文件夹“plugins”org中。布基特。插件。InvalidPlugineException:找不到主类“com”。那唐。bossbarmessage。组织上的“主要”。布基特。插

  • jar是用“meta-inf”文件夹中的清单文件创建的。清单文件(为了查看目的删除了类路径中的一些jar条目): 文件夹结构: 我正在命令提示符下使用'java-jar application.jar mypkg.main'。 有人能告诉我是什么造成的错误和如何解决它吗?

  • 问题内容: 我试图从命令promopt运行一个示例Java应用程序,但出现以下错误: 我用来尝试运行此应用的命令是: 所有相关文件都位于当前工作目录中(.java,.class和.jar文件) 我用来构建.class文件的命令如下(有2个.java文件): 再次从同一工作目录运行-的内容(或多或少): 我试图以C#开发人员的身份学习Java,所以我在编程概念方面拥有深厚的背景,整个Java工具链目

  • 我已经使用netbeans制作了jar文件,使用Build和Clean项目选项。我得到了.jar文件,现在当我执行它一小段时间后,cmd窗口出现,并给出一个错误:“Could not find or load main class while executing jar file” 但是,如果我使用命令提示符Java-jar执行jar,它可以正常工作 Netbeans的输出为: 而在jar文件中,

  • 我有一个Java/Selenium/TestNG/Maven项目。我可以成功创建myproj-0.0.1-SNAPSHOT。jar文件。当我尝试运行它时,我得到一个错误: 我的主要目标是能够运行此快照。jar文件,用于在远程计算机上运行我的测试用例。 我在pom中使用了一个构建插件。xml: 构建项目时,我使用的是maven命令:“mvn clean package shade:shade” 这就

  • 所以,我最近创建了我的第一个插件,叫做BetterTeaming。该插件正在使用插口api。插件发布后,一段时间后,有人建议我使用Maven从编译的jar中删除插口api依赖项。这应该缩小文件大小。然而,我对Maven了解不多。我成功地设置了它,并将文件复制到Maven文件夹(包括层次结构截图),但每次我在本地服务器Minecraft上加载插件时,它都会向我抛出ClassNotFoundExcep