maven install时报错:程序包不存在以及找不到类

15 篇文章 0 订阅
6 篇文章 0 订阅

报错背景

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

报错详情

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插件配置

<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类、实体类、被被依赖的类,打包插件配置为
<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>
  • 其他类或者微服务可以正常配置:
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
</build>

本文作者:Java技术债务
原文链接:https://www.cuizb.top/myblog/article/1648107069
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 3.0 CN协议进行许可。转载请署名作者且注明文章出处。

Maven 提示程序包不存在,可能是以下几个原因导致的: 1. 依赖包没有正确引入:在 pom.xml 文件中配置依赖项,需要指定依赖包的坐标(groupId、artifactId、version)。如果依赖包的坐标配置错误,或者没有引入到项目中,就会导致 Maven 不到依赖包。 2. 依赖包版本号错误:在 pom.xml 文件中配置依赖项,需要指定依赖包的版本号。如果依赖包的版本号错误,或者没有发布到仓库中,就会导致 Maven 不到依赖包。 3. 依赖包所在的仓库没有配置或者配置错误:在 pom.xml 文件中配置依赖项,需要指定依赖包所在的仓库。如果没有配置或者配置错误,就会导致 Maven 不到依赖包。 4. 本地仓库中依赖包被损坏或者删除:Maven 下载依赖包后会保存在本地仓库中,如果本地仓库中依赖包被损坏或者删除,就会导致 Maven 不到依赖包。 解决方法如下: 1. 检查 pom.xml 文件中依赖包的坐标、版本号、仓库配置是否正确。 2. 检查本地仓库中依赖包是否存在或者是否被损坏,可以尝试删除本地仓库中的依赖包,然后重新执行 Maven 构建。 3. 检查依赖包是否发布到了指定的仓库中,可以在 Maven 仓库中心(https://mvnrepository.com/)搜索相应的依赖包,查看其坐标和版本号是否正确。 4. 如果以上方法都不行,可以尝试清空本地仓库,重新执行 Maven 构建。本地仓库的位置一般在 `~/.m2/repository/` 目录下。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java技术债务

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值