使用Maven构建应用程序时发生ClassNotFoundException

时间:2019-12-13 22:35:16

标签: spring-boot maven

在使用maven的spring boot项目中。找不到课程

我的pom的一部分

<groupId>com.acme.pay</groupId>
<artifactId>ms.billing</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ms.billing</name>

<packaging>jar</packaging>

<properties>
    <default.package>com.acme.pay.ms.billing</default.package>
</properties>    

项目的结构

com
  acme
    pay
      ms
        billing
          domain
          v2
          BillingServiceApplication.java

启动应用程序时,出现此错误

  

错误:找不到或加载主类com.acme.pay.ms.BillingServiceApplication   引起原因:java.lang.ClassNotFoundException:com.acme.pay.ms.BillingServiceApplication   命令执行失败。

     

在项目ms上无法执行目标org.codehaus.mojo:exec-maven-plugin:1.5.0:exec(default-cli).billing:命令执行失败。进程退出并出现错误:1(退出值:1)-> [帮助1]

似乎没有正确的路径。

4 个答案:

答案 0 :(得分:0)

您的问题可能与您的artifactId中包含.字符有关。我从未见过像这样的artifactId格式化,我认为这可能会弄乱路径分辨率。通常,当人们希望使artifactId更具可读性时,请使用-作为分隔符(按照下面链接的maven指南中的commons-math)。

http://maven.apache.org/guides/mini/guide-naming-conventions.html

  

用小写字母和没有奇怪的符号选择所需的名称

答案 1 :(得分:0)

能否请您确认您的应用程序是否为“ Spring Boot ”应用程序?

如果是 ,则在将应用程序作为“ Java应用程序”运行时,只需将主文件选择为“ BillingServiceApplication”即可。您的pom文件没有问题。

如果否 ,那么您能否与所有依赖项共享pom文件?

我认为您需要更改以下依赖项的版本

print(...)

只需检查链接以获取关于stackoverflow的类似问题:

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:java (default-cli)

我希望这会有所帮助!

答案 2 :(得分:0)

您是否使用 @Component @Services 等为课程添加注释 要么 如果您的班级超出了扫描范围,则可以通过

将其包括在内
@ComponentScan(basePackages = "com.acme.pay.ms.billing")
@Configuration
public class SpringComponentScanApp {

或者您可以通过

使用xml
<context:component-scan base-package="com.acme.pay.ms.billing" />

答案 3 :(得分:0)

BillingServiceApplication的包裹应为com.acme.pay.ms.billing.BillingServiceApplication