Spring引导程序找不到主程序class

Spring Boot Program cannot find main class

我有一个程序 运行 作为 Spring eclipse 中的启动应用程序。该程序 运行 非常好。然后我做了以下事情:

右键单击项目 -> 运行 As -> Maven Test .

这是偶然的。当我再次尝试 运行 程序作为 spring 启动应用程序时,它在下面抛出以下错误。

Error: Could not find or load main class com.bt.collab.alu.api.webapp.Application

如何将应用程序指向主 class? 谢谢

主要 class 可在 pom.xml

中配置
<properties>
    <start-class>com.bt.collab.alu.api.webapp.Application</start-class>
</properties>

在 Eclipse 中查看 "Run -> Run Configurations..."。你应该删除你错误创建的新的,你应该还有现有的。

我怀疑它为 "Run as Maven Test" 创建了一个新的 运行 配置,而您现在总是启动这个配置。

如果您正在使用 Spring 启动并且上述建议不起作用,您可能需要查看 Eclipse 问题视图(位于 Window -> 显示视图 -> 问题).

例如,如果您的 jar 文件之一已损坏,您可能会遇到相同的错误(错误:无法找到或加载主程序 class groupId.Application) . Eclipse 会抱怨找不到应用程序 class,即使错误的 jar 是根本原因。

但是,“问题”视图会为您识别损坏的 jar。

无论如何,我必须手动转到我的本地 mvn 存储库(在 .m2 中)并手动删除损坏的 jar,并更新它(在 Package Explorer 中右键单击该项目),Maven -->更新项目... -> 确定(假设选中了正确的项目)。

我遇到了同样的问题。试试这个:

右键单击项目 -> Maven -> 更新项目

然后重新运行 项目。希望它对你也有用。

如果您遇到

error:could not find or load main class in maven project

这样做对我有用:
错误原因:这个错误的原因是运行一个maven项目的jar文件或依赖没有正确安装

错误解决方案:转到项目文件夹(例如:D:\office\OIA-service-app
在计算机的地址栏中输入命令 cmd 并按回车键。
在命令提示符中键入命令 mvn clean install 确保您有互联网连接。

使用spring-boot:运行命令启动spring启动应用程序:

前提条件: 1. 添加以下属性到pom.xml

<property>    
<start-class>com.package.name.YourApplicationMainClass</start-class>
</property>

2。构建您的项目

然后用spring-boot:运行.

配置maven命令

导航:

右键单击项目 | 运行作为| 运行 配置... |使用命令 spring-boot:运行

添加新的 Maven 配置

如果您的项目打包类型为war,您将无法启动。我正在使用具有此配置的 Maven 程序集插件;

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version><!--$NO-MVN-MAN-VER$ -->
            <configuration>
                <descriptors>
                    <descriptor>assembly.xml</descriptor>
                </descriptors>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>com.ttech.VideoUploaderApplication</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id> <!-- this is used for inheritance merges -->
                    <phase>package</phase> <!-- bind to the packaging phase -->
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我的包装 tpe 是 war 我找不到主要 class 异常,但我将包装更改为 jar 它有效;

<groupId>com.ttect</groupId>
<artifactId>VideoUploadListener</artifactId>
<version>1.0.0</version>
<packaging>**jar**</packaging>

我使用了 spring 1.5.3.RELEASE 版本并给出了 pom 依赖关系,例如

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
    </parent> 

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
   </dependencies>

我的主要 class 是

@SpringBootApplication
public class SpringAppStarter {


    public static void main(String[] args) {

        SpringApplication.run(SpringAppStarter.class, args);
    }

}

但是在执行 main class 时我仍然得到:

Could not find or load main class ... with my class name.

我可以看到 class 在 class 路径中可用并且我使用的是 STS IDE。

我没有找到问题的原因,然后我尝试使用

通过 maven 手动构建
mvn clean install

问题依然存在然后我意识到我的项目有两个库

  1. 参考图书馆
  2. Maven 库

我做了什么:
我创建了另一个 mavenRepo 文件夹并再次构建它并刷新我的项目。之后它起作用了,我看到 Maven 库已从项目 class 路径中删除。

问题是在执行时它获得了多个版本,因此无法找到合适的 class 来执行我的应用程序。 此页面中列出的其他解决方案也解决了该问题,但如果您在

中犯了错误
  1. 注释class
  2. pom 条目
  3. jar 版本等

如果有人遇到这个问题,希望这可以解决问题

从 .m2 中删除旧 jar 并更新 maven 项目应该是首要步骤。 在大多数情况下,它解决了这个问题的 issue.The 原因主要是损坏的旧罐子

我是 spring 新手,正在使用 STS 和 Maven 构建。我做了上面提到的所有事情,但对我不起作用。我在STS的问题window中注意到了两个问题。路径上缺少一个 jar 文件 (C:\Users\UserName.m2\repository\com\jayway\jsonpath\json-path.2.0)。我照做了,虽然没有强烈建议,但对我有用。

1) 我从路径location

删除了.m2文件夹

2) 重新启动 STS

3) 右键单击​​项目文件夹 -> maven -> 更新项目 -> 选中 "Force update of snapshots/releases" -> 单击确定。

Maven更新依赖,问题解决

我更新 pom(添加了一些依赖项)后发生了这种情况。

以下步骤帮助我避免了这个错误

right click on the project > maven > update project

就我而言,以下内容有所帮助:

在 pom 中添加了以下部分

  <plugins>
    <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
    </plugin>
  </plugins>

运行 它使用 maven3 并且有效

我也遇到了这个错误,一点头绪都没有。我可以在 Target 文件夹中看到 class 和 jars。我后来安装了Maven 3.5,通过Maven的conf/settings.xml将我的本地repo从C盘切换到其他盘。在那之后它工作得很好。我认为在 C 驱动器中有本地回购是主要问题。即使回购具有完全访问权限。

遇到了同样的问题,并且能够按照下面列出的步骤解决它:

  1. 文件 -> 使缓存无效并重新启动
  2. 文件 -> 新建 -> 来自现有源的项目
  3. Select pom.xml 文件只是(不是整个项目目录)加载项目。项目将自动设置。

如果有人使用 Gradle 进行构建,那么修复将通过在 build.gradle 文件

apply plugin: 'application'

mainClassName = "com.example.demo.DemoApplication"

错误:无法加载或找到主要内容class

项目:Spring启动 Tool:STS


解决步骤:


  1. 运行 项目

  1. 在问题选项卡中查看,它会显示损坏的错误

  1. 删除 .m2 文件夹中的特定 jar(损坏的 jar)

  1. 更新项目

  1. 运行成功

我知道这是很晚的回答。但它可能仍然对一些新学习者有帮助。 以下示例仅适用于带有 NETBEANS 的 springboot。 我必须执行以下步骤:

步骤 1。关注@Mariuszs 的回答。

步骤 2. 右键单击​​项目 -> 属性 -> 运行。 确保 Main Class 字段具有正确的起始符 class 否则单击浏览并从可用的 classes 中选择 select。

步骤 3。点击确定->确定。仅此而已。谢谢。

我遇到了同样的问题,只是从您的本地存储库中删除了 .m2 文件夹 希望有用。

我遇到了同样的问题。我已经删除了目标文件夹和 运行 maven 安装,它起作用了。

我在向我的项目添加 spring 安全依赖项时遇到了类似的问题, 然后我删除了我的目标文件夹并再次使用 maven 更新。 它对我有用。

即使我遇到了同样的问题,后来我发现它的发生是因为maven构建操作在我的环境中没有正常发生。请同时检查您的情况。

Intellij

  • 关闭 Intellij
  • 删除所有与 Intellij 相关的文件(.idea 文件夹和 *.iml 文件)
  • 像第一次一样在Intellij中打开项目(使用open recent不行,id需要通过file -> open完成)

我 运行 遇到同样的错误,尽管我使用的是 gradle 构建。将 IDE build/run 操作委托给 Gradle 解决了我的问题。

智能: 设置 -> 构建、执行、部署 -> 构建工具 -> Gradle -> 运行器

我尝试了以上所有解决方案,但对我没有用。 终于能够通过简单的修复来解决它。

在 STS 上, 运行 配置 > 打开你的 Spring 启动应用程序 > 打开你的配置, 按照步骤,

  1. 在 Spring 启动选项卡中,检查您的 Main class 和配置文件。
  2. 然后转到class路径选项卡,在底部你会看到两个复选框,一个是"Exclude Test Code"(如果你不想运行测试[=25,请勾选这个=]es) 和其他,"Use Temporary Jar file to specify classpath"(这是必需的)。

保存您的配置并运行。

start-class 对我不起作用,我通过将 build plugins 添加到 pom.xml 来修复它,executions 是必需的。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我在“Spring Tool Suite”软件中遇到同样的错误。

在我的例子中,我安装了 Java 8,并创建了一个 Java 11 的项目。当我 运行 这个项目时,我遇到了同样的错误,比如“可以找不到主要 class".

然后我在Java8创建了一个项目,问题解决了。

这里有很好的答案,但也许这个也会对某些人有所帮助。

对我来说,它发生在我删除 .idea(使用 IntelliJ)并重新导入项目之后。

然后这个问题开始了,我尝试 运行 mvn 编译(只是通过 IDE Maven 工具栏),一旦我修复了一些编译错误,问题就消失了

(Eclipse) 更新 Maven 项目对我不起作用。我要做的是进入 运行 配置,然后在“Main”选项卡中,在“Project”字段中,写下整个包名称 com.bla.blabla.MyMainClass(而不仅仅是 Main class姓名)。 发生错误是因为我有几个同名的项目,但在不同的包中。

我的解决方案是:

  1. 启动仪表板,右键单击您的实例。
  2. 打开配置
  3. 选项卡Spring引导
  4. 主要类型,缺少应用程序文件的路径...

如果上述解决方案 none 有效,请尝试用这个内部 pom 文件替换构建标签:

<build>
<pluginManagement>
<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
</plugins></pluginManagement>
</build>