前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Cloud微服务环境下,maven install时报错:程序包不存在以及找不到类

Spring Cloud微服务环境下,maven install时报错:程序包不存在以及找不到类

作者头像
Java技术债务
发布2022-08-09 13:32:23
1.3K0
发布2022-08-09 13:32:23
举报
文章被收录于专栏:Java技术债务

目录

报错背景

微服务中两个子工程相互依赖时,出现程序包不存在找不到目标类

报错详情

代码语言:javascript
复制
maven-compiler-plugin:3.8.1:compile (default-compile) @ gtw ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 3 source files to /Users/cuizongbao/code/cloud-alibaba-demo/gtw/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /Users/cuizongbao/code/cloud-alibaba-demo/gtw/src/main/java/com/cuizb/cloud/alibaba/gtw/controller/GtwServiceImpl.java:[3,39] 程序包com.cuizb.dubbo.demoservice.api不存在
[ERROR] /Users/cuizongbao/code/cloud-alibaba-demo/gtw/src/main/java/com/cuizb/cloud/alibaba/gtw/controller/GtwServiceImpl.java:[29,13] 找不到符号
  符号:   类 DubboDemoService
  位置: 类 com.cuizb.cloud.alibaba.gtw.controller.GtwServiceImpl
[INFO] 2 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

报错剖析

  1. 包路径是否正常
  2. pom.xml是否引入
  3. jar包是否冲突

结果发现都正常。

但是就是没有依赖。最后发现是spring-boot-maven-plugin它的问题。

解决办法

spring-boot-maven-plugin这个插件打包的Jar包可以直接运行,但是不可依赖。所以interface自始至终就没有依赖,自然会说找程序包不存在或者找不到类

修改pom.xml的maven插件配置

代码语言:javascript
复制
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 解决没有main函数报错unable to find main class 的问题-->
                <executions>
                    <execution>
                        <phase>none</phase>
                    </execution>
                </executions>
                <configuration>
                    <classifier>execute</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>

总结

一个微服务通常有两个子module,一般一个写实体类和接口一个写实现方法

  • common类、实体类、被被依赖的类,打包插件配置为
代码语言:javascript
复制
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 解决没有main函数报错unable to find main class 的问题-->
                <executions>
                    <execution>
                        <phase>none</phase>
                    </execution>
                </executions>
                <configuration>
                    <classifier>execute</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>

其他类或者微服务可以正常配置:

代码语言:javascript
复制
<build>
      <plugins>
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
      </plugins>
</build>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 报错背景
  • 报错详情
  • 报错剖析
  • 解决办法
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档