关键词搜索

源码搜索 ×
×

maven发布jar包运行时找不到类问题

发布2021-02-03浏览3333次

详情内容

我们有个公共类库,编译成jar包,供其他项目调用。

然鹅,有一个项目也编译成一个jar包,以命令行的方式运行,结果提示找不到这个公共类库。

打开项目jar包,里面是有公共类库jar包的。只不过,它没有跟一般的jar包放在一起,比如放在

BOOT-INF\lib
  • 1

而是放在了

BOOT-INF\classes\libs
  • 1

估计就是这个原因,运行时找不到了。为什么放在这里,就找不到呢?不知道。我目前还不知道原因。但是,开发阶段,在idea里运行就好好的。看来还是打包的问题。

为啥公共类库包会放在BOOT-INF\classes\libs呢?原因是依赖的方式是这样写的:

<dependency>
	<groupId>com.monkey</groupId>
	<artifactId>lt-framework</artifactId>
	<version>1.0.0</version>
	<scope>system</scope>
	<systemPath>${project.basedir}/src/main/resources/libs/lt-framework-1.0.0.jar</systemPath>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
这样做的好处是,多人开发的情况下,这个依赖包的版本是一致的。当然,将包发布到内部仓库也可以,但我们没搞这个东东。总之吧,用了上面说的,在本地文件夹寻找包的依赖方式,毛病出来了,怎么办?

其实就是在pom.xml的build里声明一下:

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
                <includeSystemScope>true</includeSystemScope>
			</configuration>
		</plugin>
	</plugins>
</build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这样子发布以后,公共包也会拷贝一份到BOOT-INF\libBOOT-INF\classes\libs还是有,浪费,不知怎么设置去掉),运行正常。

相关技术文章

最新源码

下载排行榜

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载