首页 > 编程语言 >【信创问题】解决东方通(TongWeb)报错 java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider

【信创问题】解决东方通(TongWeb)报错 java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider

时间:2024-10-11 17:47:13浏览次数:10  
标签:lang java tongweb jar 1.8 报错 371 TWServerURLClassLoader

写在前边

今天帮现场同事定位问题,情况是项目同事使用东方通(TongWeb7.0)部署公司项目时,出现以下报错导致服务启动失败。

简单排查了下发现:war包内WEB-INF/lib/javax.persistence-api-2.2.jar中包含javax.persistence.spi.PersistenceProvider这个接口,不应该报这个错误呀。

Caused by: java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider
	at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_371]
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[?:1.8.0_371]
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_371]
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:473) ~[?:1.8.0_371]
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[?:1.8.0_371]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_371]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_371]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_371]
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[?:1.8.0_371]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_371]
	at com.tongweb.server.TWServerURLClassLoader.loadClass0(TWServerURLClassLoader.java:46) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader.access$000(TWServerURLClassLoader.java:11) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader$1.loadClass(TWServerURLClassLoader.java:40) ~[bootstrap.jar:?]
	at com.tongweb.common.LoadClassCache.cacheLoadClass(LoadClassCache.java:63) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader.loadClass(TWServerURLClassLoader.java:37) ~[bootstrap.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:405) ~[?:1.8.0_371]
	at com.tongweb.server.TWServerURLClassLoader.loadClass0(TWServerURLClassLoader.java:46) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader.access$000(TWServerURLClassLoader.java:11) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader$1.loadClass(TWServerURLClassLoader.java:40) ~[bootstrap.jar:?]
	at com.tongweb.common.LoadClassCache.cacheLoadClass(LoadClassCache.java:63) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader.loadClass(TWServerURLClassLoader.java:37) ~[bootstrap.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_371]
	at com.tongweb.tongejb.core.ConnectorClassLoader.loadClass(ConnectorClassLoader.java:133) ~[tongweb.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_371]
	at java.lang.Class.forName0(Native Method) ~[?:1.8.0_371]
	at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_371]
	at com.tongweb.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1286) ~[tongweb.jar:?]
	...省略无用信息
Caused by: java.lang.ClassNotFoundException: javax.persistence.spi.PersistenceProvider
	at java.net.URLClassLoader.findClass(URLClassLoader.java:387) ~[?:1.8.0_371]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_371]
	at com.tongweb.server.TWServerURLClassLoader.loadClass0(TWServerURLClassLoader.java:46) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader.access$000(TWServerURLClassLoader.java:11) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader$1.loadClass(TWServerURLClassLoader.java:40) ~[bootstrap.jar:?]
	at com.tongweb.common.LoadClassCache.cacheLoadClass(LoadClassCache.java:63) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader.loadClass(TWServerURLClassLoader.java:37) ~[bootstrap.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_371]
	at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_371]
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[?:1.8.0_371]
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_371]
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:473) ~[?:1.8.0_371]
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[?:1.8.0_371]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_371]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_371]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_371]
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[?:1.8.0_371]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_371]
	at com.tongweb.server.TWServerURLClassLoader.loadClass0(TWServerURLClassLoader.java:46) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader.access$000(TWServerURLClassLoader.java:11) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader$1.loadClass(TWServerURLClassLoader.java:40) ~[bootstrap.jar:?]
	at com.tongweb.common.LoadClassCache.cacheLoadClass(LoadClassCache.java:63) ~[bootstrap.jar:?]
	at com.tongweb.server.TWServerURLClassLoader.loadClass(TWServerURLClassLoader.java:37) ~[bootstrap.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:405) ~[?:1.8.0_371]
	...省略无用信息

解决方法

先说解决方法:

  • 如果你的应用中包含javax.persistence-api-2.2.jar,则删除 东方通/lib/persistence-api.jar 即可。
  • 如果你的应用中不包含那个包,则把javax.persistence-api-2.2.jar下载下来放到 东方通/lib 目录下即可。

问题成因

javax.persistence-api是JavaEE的持久化API接口定义包,从2007年发布到Maven中央仓库开始,Maven坐标变更过好多次,每次变更的兼容性也一言难尽。

  • javax.persistence:persistence-api 2007年最古老的版本,1.0~1.0.2 版本是最常用的版本。
  • javax.persistence:javax.persistence-api 2017迁移Maven坐标,只发布了2.2版本,是目前最流行的版本。
  • jakarta.persistence:jakarta.persistence-api 2018年迁移Maven坐标,发布了2.2.x、3.0.x、3.1.x、3.2.x版本,3.2.0是2024年5月21日发布的截止发文前的最新版本。

东方通7.0版本自带的是最早期的版本(没标识是1.0还是1.0.2),只有2.2以上版本才有javax.persistence.spi.PersistenceProvider这个类的。

最后

信创环境资料少,如果本文对你有所帮助,请不吝点赞评论,你的支持就是我写作的鼓励!

标签:lang,java,tongweb,jar,1.8,报错,371,TWServerURLClassLoader
From: https://www.cnblogs.com/hellxz/p/18458960

相关文章

  • Java基础语法-类型转换
    类型转换由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。低------------------------->高byte,short,char->int->long->float->double运算中,不同类型的数据先转化为同一类型,然后再进行运算。强制转换(类型)变量名高-低自动转换低-高inti=128;......
  • vue ui创建项目报错:Cannot read property 'indexOf' of undefined解决方法
    本来以为是个很简单的小报错,在网上搜了几个教程竟然都没有解决,整了快半个小时,越整越烦躁。最后忍无可忍重新安装了一遍nodejs,竟然还报这个错...突然想到自己一直没去看详细的报错日志,于是在黑窗看了一下报错内容:原来是权限不够(注:之前用系统管理员身份运行过,创建项目那里目录一......
  • 使用JNA在java中调用rust函数
    JNA是sun公司对JNI能力的封装,更多信息请自行问AI。咱们直接上代码。调用系统本地库先引入jar包:<!--https://mvnrepository.com/artifact/net.java.dev.jna/jna--><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId>......
  • java+vue计算机毕设工作计划统计分析系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今快节奏的商业环境中,企业的高效运作离不开精细化的管理与规划。随着企业规模的扩大,部门间协作的复杂性、员工工作计划的多样性以及项目进度的动......
  • java+vue计算机毕设工程认证辅助系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球工程教育的快速发展,工程认证已成为衡量高等教育质量与国际接轨的重要标尺。它不仅要求教育机构具备完善的教学体系,还强调对学生实践能力和创......
  • java+vue计算机毕设食品点评及售卖系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的快速发展和人们生活节奏的加快,线上食品点评及售卖系统已成为现代都市生活不可或缺的一部分。近年来,食品安全问题频发,消费者对食品质量、......
  • LeetCode:871. 最低加油次数(DP Java)
    目录871.最低加油次数题目描述:实现代码与解析:DP原理思路:871.最低加油次数题目描述:        汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,用数组 stations 表示。其中 stations[i]=[positioni,fueli] 表示第 ......
  • Golang上下文context
    上篇内容我们主要讲解了net/http标准库的使用,其中包含如何创建POST请求、GET请求以及如何携带参数的请求。Context介绍context释义为上下文,在我们使用goroutine时一般使用context来进行元数据的传递,非元数据不建议使用context来进行传递。那么我们主要是用context用来做什么呢?其......
  • java毕业设计-基于Springboot的多商家商城系统【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:Springboot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能管理员管理:负责系统后台的整体运维,包......
  • java计算机毕业设计分布式生鲜市场信息系统设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着人们生活水平的提高和消费观念的转变,生鲜食品市场迎来了前所未有的发展机遇。然而,传统的生鲜销售模式面临着信息不对称、供应链冗长、损耗率高等......