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

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

时间:2024-10-11 17:47:13浏览次数:13  
标签: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

相关文章

  • vue ui创建项目报错:Cannot read property 'indexOf' of undefined解决方法
    本来以为是个很简单的小报错,在网上搜了几个教程竟然都没有解决,整了快半个小时,越整越烦躁。最后忍无可忍重新安装了一遍nodejs,竟然还报这个错...突然想到自己一直没去看详细的报错日志,于是在黑窗看了一下报错内容:原来是权限不够(注:之前用系统管理员身份运行过,创建项目那里目录一......
  • java+vue计算机毕设工作计划统计分析系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今快节奏的商业环境中,企业的高效运作离不开精细化的管理与规划。随着企业规模的扩大,部门间协作的复杂性、员工工作计划的多样性以及项目进度的动......
  • java+vue计算机毕设食品点评及售卖系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网的快速发展和人们生活节奏的加快,线上食品点评及售卖系统已成为现代都市生活不可或缺的一部分。近年来,食品安全问题频发,消费者对食品质量、......
  • java毕业设计-基于Springboot的多商家商城系统【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:Springboot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能管理员管理:负责系统后台的整体运维,包......
  • java计算机毕业设计分布式生鲜市场信息系统设计与实现(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着人们生活水平的提高和消费观念的转变,生鲜食品市场迎来了前所未有的发展机遇。然而,传统的生鲜销售模式面临着信息不对称、供应链冗长、损耗率高等......