Spring Boot程序找不到主类


70

我有一个程序在Eclipse中作为Spring boot App运行。该程序运行良好。然后我做了以下工作:

右键单击项目->运行方式-> Maven测试。

这是偶然的。然后,当我尝试再次将该程序作为Spring Boot应用程序运行时,它在下面抛出了以下错误。

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

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


com.bt.collab.alu.api.webapp.Application是适当的课吗?
MariuszS 2015年

这是我最主要的课程
Christopher Jobling 2015年

什么春季启动版本?
MariuszS 2015年

Answers:


44

主类可在pom.xml中配置

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

1
可以在pom.xml的properties部分中将主类定义为开始类元素:<properties> <!-通过执行“ java -jar”开始主类-> <start-class> org.baeldung .DemoApplication </ start-class> </ properties>重要->>>注意,仅当我们还将pom.xml中的spring-boot-starter-parent添加为<parent>时,才会评估此属性。 baeldung.com/spring-boot-main-class
granadaCoder

需要做的另一项检查是确保即使在pom.xml中声明了主类,项目中也没有任何错误,特别是在POM.xml中
Mahender Reddy Yasa,

112

我有同样的问题。尝试这个 :

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

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


这也为我工作。使用“新建项目”>“弹簧启动向导”时,初始(Maven)项目配置似乎不完整。(视窗10时,Eclipse光子版本(4.8.0),春季2.1.1)
MichaelHuelsen

这对我有用,但是main cause 这里是什么?
卡兰卡'19

可能是由于使用mvn install和之后mvn clean删除目标文件夹引起的。
网络版

21

在Eclipse中的“运行->运行配置...”下查看。您应该删除错误创建的新目录,但仍应具有现有目录。

我怀疑它已经为“以Maven测试方式运行”创建了新的运行配置,您现在总是在启动该配置。


大!。如果删除其他正在运行的配置,则这是永久性解决方案。
eneski '18

1
谢谢!就我而言,我正在将项目从Maven转换为Gradle。一切正常,直到“ Run as> Spring Boot app”运行为止:我明白了Error: could not find or load main class。我删除了“运行方式”配置(碰巧具有Maven依赖项),然后重新创建它(单击3次按钮)……问题消失了。
paulsm4

17

如果您使用的是Spring Boot,但以上建议不起作用,则可能需要查看Eclipse Problems视图(可在Window-> Show View-> Problems中找到)。

例如,如果您的一个jar文件已损坏,您将得到相同的错误(错误:找不到或加载主类groupId .Application)。Eclipse会抱怨说,即使损坏的jar是根本原因,也无法找到Applications类。

但是,“问题”视图将为您识别损坏的罐子。

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


我对Hibernate遇到了严重的问题,它引发了各种错误。这种方法对我有很大帮助!当我打开“问题”窗口时,它清楚地表明损坏的.jar文件,我只是在.m2存储库中删除了该文件。之后,我用Maven重建了项目,现在一切正常。谢谢!
milan.latinovic

您的建议解决了我的问题。我们还可以在pom文件位置点击“ mvn install”,该文件会自动处理依赖关系问题。谢谢
shiv

9

更新了pom(添加了一些依赖项)后,这发生在我身上。

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

right click on the project > maven > update project

1
这帮助了我。谢谢。
Mdhar9e

我再次遇到相同的问题,这次我没有更新pom,我只是选择了一个旧项目并尝试运行它,但是找不到主类错误。仍然“右键单击项目> maven>更新项目”作品
Tadele Ayelegn

6

我尝试了上述所有解决方案,但没有为我工作。终于可以通过一个简单的修复程序解决它。

在STS上,运行配置>打开您的Spring Boot应用>打开您的配置,按照以下步骤操作,

  1. 在Spring boot选项卡中,检查您的Main class和配置文件。
  2. 然后转到类路径选项卡,在底部,您将看到两个复选框,一个是“排除测试代码”(如果不想运行测试类,请选中此复选框),另一个是“使用临时Jar文件指定类路径”(这是必要)。

保存配置并运行。 在此处输入图片说明


5

使用spring-boot:run命令来启动spring boot应用程序:

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

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

2.建立您的专案

然后使用spring-boot:run配置maven命令。

导航:

右键单击项目| 运行方式| 运行配置... | 使用命令spring-boot:run添加新的Maven配置


谢谢!该Maven配置可帮助我测试最终的Spring Boot构建应用程序
Julianesten

4

如果有人使用Gradle进行构建,则修复方法是在build.gradle文件中添加以下行

apply plugin: 'application'

mainClassName = "com.example.demo.DemoApplication"


3

智能

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

2

我已经使用了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>

我的主要课程是

@SpringBootApplication
public class SpringAppStarter {


    public static void main(String[] args) {

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

}

但是在执行主类时,我仍然得到:

无法找到或加载具有我的班级名称的班级...。

我可以看到该类在类路径中可用,并且我正在使用STS IDE。

我没有得到这个问题的原因,然后我尝试通过Maven手动构建

mvn clean install

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

  1. 参考图书馆
  2. Maven图书馆

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

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

  1. 注释类
  2. pom入口
  3. jar版本等

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


2

从.m2删除旧的jar文件并更新maven项目应该是主要步骤。在大多数情况下,它可以解决问题。此问题的原因主要是损坏的旧罐子


2

遇到了相同的问题,并可以通过以下列出的步骤解决此问题:

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

2

错误:无法加载或找到主类

项目:Spring Boot工具:STS


解决步骤:


  1. 运行项目

  1. 在问题标签中查看,它将显示损坏的错误

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

  1. 更新项目

  1. 运行成功


1

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

步骤1。按照@Mariuszs的回答。

步骤2.右键单击项目->属性->运行。确保Main Class字段具有正确的入门类,否则单击Browse并从可用的类中选择。

第三步。单击确定->确定。Thant就是全部。谢谢。


1

我遇到了同样的问题,只是从您的本地存储库中删除了.m2文件夹文件夹,希望它能正常工作。


0

如果您遇到了

错误:无法在Maven项目中找到或加载主类

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

解决方案错误:转到项目文件夹(如:D:\office\OIA-service-app
在计算机类型的命令的地址栏中cmd,然后按Enter。
在命令提示符下键入命令,mvn clean install确保您具有Internet连接。


0

如果您的项目打包类型是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>

我的包装是战争,我找不到主要类别的例外,因为我将包装改为罐子才行。

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

0

我是春季引导的新手,并且将STS与Maven构建一起使用。我做了上面提到的所有事情,但对我不起作用。我在STS的问题窗口中注意到两个问题。路径上缺少一个jar文件(C:\ Users \ UserName.m2 \ repository \ com \ jayway \ jsonpath \ json-path \ 2.2.0)。我确实遵循了以下方法,但并未强烈建议使用此方法,但对我有用。

1)我从路径位置删除了.m2文件夹

2)重新启动STS

3)右键单击项目文件夹-> maven->更新项目->选中“强制更新快照/发行版”->单击“确定”。

Maven更新了它的依赖关系,问题得以解决。


0

就我而言,以下帮助:

在pom中添加了以下部分

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

使用maven3运行它并成功


0

我也收到此错误,没有任何线索。我可以在Target文件夹中看到该类和jar。后来我安装了Maven 3.5,通过Maven的conf / settings.xml将本地存储库从C驱动器切换到其他驱动器。在那之后,它工作得非常好。我认为在C驱动器中进行本地回购是主要问题。即使回购具有完全访问权限。




0

即使我也遇到了同样的问题,后来我发现它发生是因为在我的环境中Maven构建操作未正确进行。请根据您的情况进行检查。


0

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

Intellij:设置->构建,执行,部署->构建工具-> Gradle-> Runner

屏幕截图


0

start-class不为我工作,我固定它通过添加build pluginspom.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>

0

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

就我而言,我安装了Java 8,并创建了Java 11项目。运行该项目时,我遇到了同样的错误,例如“找不到主类”。

然后,我用Java 8创建了一个项目,问题得以解决。


0

这里有很好的答案,但是也许这也可以帮助别人。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.