Spring Boot 程序找不到主类
Posted
技术标签:
【中文标题】Spring Boot 程序找不到主类【英文标题】:Spring Boot Program cannot find main class 【发布时间】:2015-04-11 15:12:00 【问题描述】:我有一个在 Eclipse 中作为 Spring Boot 应用程序运行的程序。该程序运行良好。然后我做了以下事情:
右击项目 -> 运行方式 -> 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
是正确的类吗?
这是我的主要是的类
什么春季启动版本?
@chris,你能分享你的pom.xml
吗?
【参考方案1】:
我的解决方案是:
-
启动仪表板,右键单击您的实例。
打开配置
标签弹簧引导
主要类型,缺少应用程序文件的路径...
【讨论】:
【参考方案2】:(Eclipse) 更新 maven 项目对我不起作用。我要做的是进入运行配置,并在“主”选项卡的“项目”字段中,写下整个包名 com.bla.blabla.MyMainClass (而不仅仅是主类名)。 发生错误是因为我有几个同名的项目,但在不同的包中。
【讨论】:
【参考方案3】:这里有很好的答案,但也许这个也可以帮助某人。
对我来说,它发生在我删除 .idea(使用 IntelliJ)并重新导入项目之后。
然后这个问题开始了,我尝试运行 mvn compile(只是通过 IDE Maven 工具栏),一旦我修复了一些编译错误,问题就消失了
【讨论】:
【参考方案4】:我在“Spring Tool Suite”软件中遇到了同样的错误。
就我而言,我安装了 Java 8,并创建了一个 Java 11 项目。当我运行该项目时,我遇到了同样的错误,比如“找不到主类”。
然后我用 Java 8 创建了一个项目,问题就解决了。
【讨论】:
【参考方案5】: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>
【讨论】:
【参考方案6】:我尝试了上述所有解决方案,但没有为我工作。 终于能够通过一个简单的修复来解决它。
在 STS 上, 运行配置 > 打开您的 Spring Boot 应用程序 > 打开您的配置, 按照步骤,
-
在 Spring boot 选项卡中,检查您的 Main 类和配置文件。
然后转到类路径选项卡,在底部您会看到两个复选框,一个是“排除测试代码”(如果您不想运行测试类,请选中此选项)和另一个“使用临时 Jar 文件指定类路径” (这是必要的)。
保存配置并运行。
【讨论】:
【参考方案7】:我遇到了同样的错误,虽然我使用的是 gradle build。将 IDE 构建/运行操作委托给 Gradle 解决了我的问题。
智能: 设置 -> 构建、执行、部署 -> 构建工具 -> Gradle -> Runner
【讨论】:
【参考方案8】:智能
关闭 Intellij 删除所有与 Intellij 相关的文件(.idea 文件夹和 *.iml 文件) 在 Intellij 中像第一次一样打开项目(使用 open recent 不起作用,id 需要通过 file -> open 完成)【讨论】:
【参考方案9】:即使我遇到了同样的问题,后来我发现它的发生是因为 maven 构建操作在我的环境中没有正确发生。也请检查您的情况。
【讨论】:
【参考方案10】:在我的项目中添加 spring 安全依赖项时,我遇到了类似的问题, 然后我删除了我的目标文件夹并再次使用 maven update 。 它对我有用。
【讨论】:
【参考方案11】:我也遇到了同样的问题。我已经删除了目标文件夹并运行了maven install,它工作了。
【讨论】:
【参考方案12】:我遇到了同样的问题,只是从本地存储库中删除 .m2 文件夹 希望它会起作用。
【讨论】:
【参考方案13】:我知道这是很晚的答案。但它可能仍然对一些新学习者有所帮助。 以下示例仅适用于带有 NETBEANS 的 springboot。 我必须执行以下步骤:
第 1 步。关注@Mariuszs 的回答。
第 2 步。 右键单击项目 -> 属性 -> 运行。 确保 Main Class 字段具有正确的起始类,否则单击浏览并从可用类中选择。
第 3 步。单击确定-> 确定。仅此而已。谢谢。
【讨论】:
【参考方案14】:错误:无法加载或找到主类
项目:Spring Boot 工具:STS
解决步骤:
-
运行项目
-
在问题选项卡中查看,它将显示损坏的错误
-
删除 .m2 文件夹中的特定 jar(损坏的 jar)
-
更新项目
-
运行成功
【讨论】:
【参考方案15】:如果有人使用 Gradle 进行构建,则修复方法是在 build.gradle 文件中添加以下行
apply plugin: 'application'
mainClassName = "com.example.demo.DemoApplication"
【讨论】:
【参考方案16】:遇到了同样的问题,可以通过下面列出的步骤解决它:
-
文件 -> 使缓存无效并重新启动
文件 -> 新建 -> 来自现有源的项目
只选择pom.xml文件(不是整个项目目录)来加载项目。项目将自动设置。
【讨论】:
【参考方案17】:我也得到了这个错误,没有任何线索。我可以在 Target 文件夹中看到类和罐子。我后来安装了 Maven 3.5,通过 Maven 的 conf/settings.xml 将我的本地仓库从 C 盘切换到其他驱动器。在那之后它工作得很好。我认为在 C 盘中有本地仓库是主要问题。即使 repo 具有完全访问权限。
【讨论】:
【参考方案18】:在我的情况下,以下帮助:
在 pom 中添加了以下部分
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
使用 maven3 运行它并且成功了
【讨论】:
【参考方案19】:这发生在我更新 pom 之后(添加了一些依赖项)。
以下步骤帮助我避免了这个错误
right click on the project > maven > update project
【讨论】:
这对我有帮助。谢谢。 我又遇到了同样的问题,这次我没有更新 pom。我只是选择了一个旧项目并尝试运行它,但是找不到主类错误。仍然'右键单击项目> Maven>更新项目'作品【参考方案20】:我是 Spring Boot 新手,并且使用 STS 和 maven 构建。我做了上面提到的所有事情,但对我不起作用。我注意到 STS 的问题窗口中有两个问题。路径上缺少 jar 文件 (C:\Users\UserName.m2\repository\com\jayway\jsonpath\json-path\2.2.0)。我确实遵循了这种方法,但并未强烈建议该方法,但对我有用。
1) 我从路径位置删除了 .m2 文件夹
2) 重启 STS
3) 右键单击项目文件夹 -> maven -> 更新项目 -> 选中“强制更新快照/版本” -> 点击确定。
Maven更新了它的依赖,问题就解决了。
【讨论】:
【参考方案21】:从 .m2 中删除旧 jars 并更新 maven 项目应该是主要步骤。 在大多数情况下,它可以解决问题。这个问题的原因主要是旧 jar 损坏
【讨论】:
【参考方案22】:我使用了 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
问题仍然存在,然后我意识到我的项目有两个库
-
参考库
Maven 库
我做了什么: 我创建了另一个 mavenRepo 文件夹并再次构建它并刷新我的项目。之后它工作了,我看到 Maven 库已从项目类路径中删除。
问题是在执行时它获得了多个版本,因此它无法找到合适的类来执行我的应用程序。 此页面中列出的其他解决方案也可以解决该问题,但如果您在
中做错了-
注释类
pom 条目
jar 版本等
如果有人遇到这个问题,希望这可以解决问题
【讨论】:
【参考方案23】:如果你的项目包装类型战争你无法启动。我正在使用具有此配置的 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>
我的包装是战争,我找不到主类异常,但我将包装更改为 jar 它可以工作;
<groupId>com.ttect</groupId>
<artifactId>VideoUploadListener</artifactId>
<version>1.0.0</version>
<packaging>**jar**</packaging>
【讨论】:
【参考方案24】:使用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 构建应用程序【参考方案25】:如果你遇到了
错误:无法在 maven 项目中找到或加载主类
这样做对我有用: 错误原因:这个错误的原因是运行maven项目的jar文件或依赖没有正确安装。
错误解决方法:进入项目文件夹(如:D:\office\OIA-service-app
)
在电脑地址栏输入命令cmd
,然后回车。
在命令提示符中输入命令mvn clean install
确保您有互联网连接。
【讨论】:
【参考方案26】:我遇到了同样的问题。试试这个:
右键项目 -> Maven -> 更新项目
然后重新运行项目。希望它也对你有用。
【讨论】:
这对我也有用。使用“新建项目”>“spring-boot 向导”时的初始(maven)项目配置似乎不完整。 (Windows 10、Eclipse Photon 版本 (4.8.0)、Spring 2.1.1) 这对我有用,但这里的main cause
是什么?
可能是使用mvn install
和之后mvn clean
删除目标文件夹造成的。
这对我有用。将项目与 gitHub 连接后发生此错误
在经历了几个小时的痛苦之后,你救了我。谢谢。【参考方案27】:
如果您使用的是 Spring Boot 并且上述建议不起作用,您可能需要查看 Eclipse 问题视图(在 Window -> Show View -> Problems 中可用)。
例如,如果您的 jar 文件之一损坏,您可能会收到相同的错误(错误:无法找到或加载主类 groupId.Application)。 Eclipse 会抱怨它找不到 Applications 类,即使错误的 jar 是根本原因。
但是,问题视图会为您识别坏 jar。
无论如何,我必须手动转到我的本地 mvn 存储库(在 .m2 中)并手动删除损坏的 jar,然后更新它(右键单击 Package Explorer 中的项目),Maven --> Update Project ... -> 好的(假设选中了正确的项目)。
【讨论】:
Hibernate 遇到了严重的问题,它引发了各种错误。这个方法对我帮助很大!当我打开问题窗口时,它清楚地指出损坏的 .jar 文件,我只是在 .m2 存储库中删除了该文件。在此之后,我用 Maven 重建了我的项目,现在一切正常。谢谢! 您的建议解决了我的问题。我们还可以在 pom 文件位置点击“mvn install”,它会自动处理依赖问题。谢谢。【参考方案28】:查看 Eclipse 中的“运行 -> 运行配置...”。你应该删除你错误创建的新的,你应该仍然拥有现有的。
我怀疑它已经为“作为 Maven 测试运行”创建了一个新的运行配置,而您现在总是在启动这个配置。
【讨论】:
太棒了!如果您删除其他正在运行的配置,这是一个持久的解决方案。 谢谢!就我而言,我正在将我的项目从 Maven 转换为 Gradle。一切似乎都可以工作,直到“运行为> Spring Boot 应用程序”:我得到了Error: could not find or load main class
。我删除了 Run as 配置(碰巧有 Maven 依赖项),重新创建它(点击 3 次按钮)......问题就消失了。【参考方案29】:
主类可在 pom.xml 中配置
<properties>
<start-class>com.bt.collab.alu.api.webapp.Application</start-class>
</properties>
【讨论】:
主类可以在 pom.xml 的属性部分定义为 start-class 元素:以上是关于Spring Boot 程序找不到主类的主要内容,如果未能解决你的问题,请参考以下文章