Maven依赖scope为system级别部署时Jar包缺少解决

news2025/1/12 10:00:20

问题

在开发springboot项目时,maven引入本地第三方jar包,在idea中运行正常。打成jar部署后报找不到类
错误如下:

ERROR SpringApplication.reportFailure(834) | Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'persistenceExceptionTranslationPostProcessor' defined in class path resource [org/springframework/boot/autoconfigure/dao/PersistenceExceptionTranslationAutoConfiguration.class]: Unsatisfied dependency expressed through method 'persistenceExceptionTranslationPostProcessor' parameter 0; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.jbpm.pvm.internal.processengine.SpringHelper] for bean with name 'springHelper' defined in class path resource [spring-jbpm.xml]; nested exception is java.lang.ClassNotFoundException: org.jbpm.pvm.internal.processengine.SpringHelper
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:799)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:540)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1341)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1181)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
	at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:229)
	at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:723)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:536)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:755)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:402)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1247)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1236)
	at com.ceris.TestApplication.main(TestApplication.java:20)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.jbpm.pvm.internal.processengine.SpringHelper] for bean with name 'springHelper' defined in class path resource [spring-jbpm.xml]; nested exception is java.lang.ClassNotFoundException: org.jbpm.pvm.internal.processengine.SpringHelper
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1486)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:681)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:648)
	at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1614)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:523)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:495)
	at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:265)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1473)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1270)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:886)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:790)
	... 28 more
Caused by: java.lang.ClassNotFoundException: org.jbpm.pvm.internal.processengine.SpringHelper
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at org.springframework.util.ClassUtils.forName(ClassUtils.java:284)
	at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:469)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1551)
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1478)
	... 39 more

项目

Maven依赖如下:

<dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-bpmn</artifactId>
      <version>1.0-SNAPSHOT</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/src/main/resources/lib/jbpm-bpmn.jar</systemPath>
  </dependency>

解决

在spring-boot-maven-plugin 插件设置加上includeSystemScope为true

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.6.2</version>
    <configuration>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

原因

scope为system的maven默认是不打包进去的。

 <parameter>
        <name>includeSystemScope</name>
        <type>boolean</type>
        <since>1.4.0</since>
        <required>false</required>
        <editable>true</editable>
        <description>Include system scoped dependencies.</description>
</parameter>

注:springboot的maven打包插件,只会扫描当前模块下的路径,并不会把其他模块项目路径下的外部jar进行打包,需将第三方包放进项目内。

扩展

Maven依赖的范围

有时依赖信息中除了目标 jar 包的坐标还有一个 scope 设置,这就是依赖的范围。依赖的范围有几个可选值,常用的有:compile、test、provided 三个,当然还有不常用的 runtime、system…

compile:默认范围,编译测试运行都有效

provided:在编译和测试时有效

runtime:在测试和运行时有效

test:只在测试时有效

system:在编译和测试时有效,与本机系统关联,可移植性差

依赖范围传递性

依赖的范围也有传递性(继承性),当前项目和引用的资源配置的作用范围不同时,存在以下关系:

在这里插入图片描述

生命周期

在这里插入图片描述

Maven有3个内置的构建生命周期:

clean – 清理构建输出,包括生成的编译类、JAR文件等
default – 编译源代码并处理打包项目相关的所有事情
site –为项目生成文档

Clean 生命周期

Clean 生命周期一共包含了三个阶段:

pre-clean 执行一些需要在 clean 之前完成的工作

clean 移除所有上一次构建生成的文件

post-clean 执行一些需要在 clean 之后立刻完成的工作

Default 生命周期

每执行一个命令,在该命令之前的命令都会执行,一直到该命令。比如执行test(测试)命令,在test之前的所有指令都会依次执行,一直到test为止,test之后的不会执行。其他声明周期也一样。

validate(校验):校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
initialize(初始化):初始化构建状态,比如设置属性值。
generate-sources(生成源代码):生成包含在编译阶段中的任何源代码。
process-sources(处理源代码):处理源代码,比如说,过滤任意值。
generate-resources(生成资源文件):生成将会包含在项目包中的资源文件。
process-resources (处理资源文件):复制和处理资源到目标目录,为打包阶段最好准备。
compile(编译):编译项目的源代码。
process-classes(处理类文件):处理编译生成的文件,比如说对Java class文件做字节码改善优化。
generate-test-sources(生成测试源代码):生成包含在编译阶段中的任何测试源代码。
process-test-sources(处理测试源代码):处理测试源代码,比如说,过滤任意值。
generate-test-resources(生成测试资源文件):为测试创建资源文件。
process-test-resources(处理测试资源文件):复制和处理测试资源到目标目录。
test-compile(编译测试源码):编译测试源代码到测试目标目录。
process-test-classes(处理测试类文件):处理测试源码编译生成的文件。
test(测试):使用合适的单元测试框架运行测试(Juint是其中之一)。
prepare-package(准备打包):在实际打包之前,执行任何的必要的操作为打包做准备。
package(打包):将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
pre-integration-test(集成测试前):在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
integration-test(集成测试):处理和部署项目到可以运行集成测试环境中。
post-integration-test(集成测试后):在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
verify (验证):运行任意的检查来验证项目包有效且达到质量标准。
install(安装):安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
deploy(部署):将最终的项目包复制到远程仓库中与其他开发者和项目共享。

Site 生命周期

pre-site 执行一些需要在生成站点文档之前完成的工作

site 生成项目的站点文档

post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy 将生成的站点文档部署到特定的服务器上 这里经常用到的是 site 阶段和 site-deploy
阶段,用以生成和发布 Maven 站点,这可是 Maven 相当强大 的功能,Manager 比较喜欢,文档及统计数据自动生成,很好看。

在这里插入图片描述

野马也 尘埃也 生物之以息相吹也

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【tio-websocket】8、服务配置与维护—TioConfig

场景 我们在写 TCP Server 时,都会先选好一个端口以监听客户端连接,再创建N组线程池来执行相关的任务,譬如发送消息、解码数据包、处理数据包等任务,还要维护客户端连接的各种数据,为了和业务互动,还要把这些客户端连接和各种业务数据绑定起来,譬如把某个客户端绑定到一…

仪表盘自定义标题和数值样式

仪表盘自定义标题和数值样式 fn() var myEcharts; function fn(v) {var chartDom document.getElementById(myEcharts);myEcharts&& myEcharts.dispose();myEcharts echarts.init(chartDom, walden);var option;option {series: [{type: gauge,radius: 85%,center: […

activiti7 报错Couldn‘t resolve collection expression nor variable reference

解决方法 nacos添加配置 spring&#xff1a;activiti: serializePOJOsInVariablesToJson: false 截图如下&#xff1a; 分析过程 Couldnt resolve collection expression nor variable reference报错分析是“无法解析集合表达式或变量引用” 刚开始我一直测试…

激光雷达数据为例滤波器

可以通过传感器获取障碍物的位置、速度; 但是任何测量结果都是有误差的。 因此需要在传感器测量结果的基础上, 进行跟踪,以此来保证障碍物的位置、速度等信息不会发生突变。 所谓的跟踪就是通过运动模型来递推障碍物的位置、速度等信息。 最经典的跟踪算法是卡尔曼滤波器。…

用户社交信息交互卡片

效果展示 CSS 知识点 CSS 基础知识回顾transition-delay 属性的运用 整体页面布局实现 <div class"card"><div class"user"><div class"img_box"><img src"bg.jpg" /></div><div class"cont…

积分球检测水质的原理是什么?

积分球可以用于检测水质&#xff0c;主要通过测量水体中物质的吸收光谱来实现。具体来说&#xff0c;光路经过积分球内腔&#xff0c;当水样经过球体时&#xff0c;水体中的物质会吸收一定波长的光&#xff0c;从而改变球体的透射光强。通过测量球体透射光强的改变&#xff0c;…

UE 交互草实现 不通过RT与距离场的方式

通过计算世界场景位置与玩家位置的距离&#xff0c;如果距离大于等于DistanceEffect则不做操作&#xff0c;若小于DistanceEffect则DistanceEffect减去两者之间距离除以并除以DistanceEffect&#xff0c;为什么有这个操作呢&#xff1f; 因为我们要做在DistanceEffect距离内&a…

水质分析仪器升级新功能

水质分析仪器&#xff1a;是一种适用于水质多参数测试的便携式仪器。它具有7英寸的触摸彩色屏幕&#xff0c;用户可以通过触摸屏幕进行操作和查看测试结果。 该仪器主要用于测定COD&#xff0c;氨氮&#xff0c;总磷&#xff0c;总氮等常规水质指标&#xff0c;pH值、溶解氧、…

CTFhub-SSRF-端口扫描

根据提示&#xff1a; 来来来性感CTFHub在线扫端口,据说端口范围是8000-9000哦, 用数字生成器生成 8000-9000 的数字 在线生成1到10000阿拉伯数字 - 批量之家 通过 burp 抓包爆破 爆破需要在 url 后添加 127.0.0.1&#xff1a; 根据爆破结果&#xff0c;端口是 8335

【EI会议征稿】第五届大数据与信息化教育国际学术会议(ICBDIE 2024)

【有往届检索记录】第五届大数据与信息化教育国际学术会议&#xff08;ICBDIE 2024&#xff09; 2023 5th International Conference on Big Data and Informatization Education 第五届大数据与信息化教育国际学术会议&#xff08;ICBDIE 2024&#xff09;定于2024年01月19-…

记录npm的版本问题

安装vivo小游戏开发者工具时&#xff0c;运行mg -v时出现错误&#xff0c;错误的原因是node.js的的版本过低&#xff0c;我用的是6.11.2&#xff0c;将node.js升级到10.10.0问题解决

别处拿来的VUE项目 npm run serve报错

问题现象&#xff1a; 从别处拷贝来的VUE项目&#xff0c;根据说明通过npm install 加载了项目依赖 &#xff0c;但是运行npm run serve里报错&#xff1a; npm ERR! Missing script: "serve" npm ERR! npm ERR! To see a list of scripts, run: npm ERR! npm ru…

Mr.Alright---MTK安卓13 抬手亮屏功能的逻辑

该功能在系统设置-显示-拿起设备时唤醒 alps\vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\display\LiftToWakePreferenceController.javapublic boolean isAvailable() {SensorManager sensors (SensorManager) mContext.getSystemServ…

应用系统集成-企业集成模式(EIP)

应用系统集成-企业集成模式&#xff08;EIP&#xff09; 无论是系统间集成或是系统内部组件之间通讯&#xff0c;消息&#xff08;信息流&#xff09;都是系统设计最重要的因素。EIP将详细的讲述了从消息的角度进行集成设计考虑方方面面&#xff0c;是系统设计重要的参考资料。…

springBoot与Vue共同搭建webSocket环境

欢迎使用Markdown编辑器 你好&#xff01; 这片文章将教会你从后端springCloud到前端VueEleementAdmin如何搭建Websocket 前端 1. 创建websocket的配置文件在utils文件夹下websocket.js // 暴露自定义websocket对象 export const socket {// 后台请求路径url: ,websocketCo…

Python学习--函数传值问题

四、函数传值问题 先看一个例子&#xff1a; # -*- coding: UTF-8 -*- def chagne_number( b ):b 1000b 1 chagne_number(b) print( b )最后输出的结果为&#xff1a; 1先看看运行的结果&#xff1f; 想一下为什么打印的结果是 1 &#xff0c;而不是 1000 &#xff1f; …

凉鞋的 Godot 笔记 204. 语句

204. 语句 在上一篇&#xff0c;我们接触了三种常见的类型&#xff0c;如下所示&#xff1a; 这样我们算是对变量进行了一个入门了。 其实我们除了变量&#xff0c;我们还接触了一个叫做语句的概念。 我们可以看下代码: extends Node# Called when the node enters the sce…

Kubernetes原生微服务开发实践

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 引言 随着互联网业务的…

差值结构顺序的稳定性

3( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 4( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 5( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 做3个网络,让网络的输入都只有3个节点&#xff0c; 一个网络的训练集有3张图片&#xff0c;一个网络训练集有4张图片&#xff0c;一个网络的训练集有5张…

1.VS2022+QT

项目需要对倾斜摄影进行解析编辑&#xff0c;所以采用osg平台。 1.VS2022 百度下载安装一个包&#xff0c;然后选择C桌面开发。 2.Qt 在以下网站下载在线安装程序&#xff0c;并通过cmd运行安装程序。然后根据截图配置安装。 qt | 镜像站使用帮助 | 清华大学开源软件镜像站 |…