【信创问题】解决东方通(TongWeb)报错 java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider
写在前边
今天帮现场同事定位问题,情况是项目同事使用东方通(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
这个类的。
最后
信创环境资料少,如果本文对你有所帮助,请不吝点赞评论,你的支持就是我写作的鼓励!
【信创问题】解决东方通(TongWeb)报错 java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider的更多相关文章
- resin下发布项目报错java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index
我的resin版本为4.0.56; 项目在tomcat下启动正常,打包在resin下发布时报错:java.lang.NoSuchMethodError: javax.persistence.Table ...
- 执行quartz报错java.lang.NoClassDefFoundError: javax/transaction/UserTransaction
使用maven ,可以在 http://mvnrepository.com 中去查找 pom 配置如何写 <!-- https://mvnrepository.com/artifact/org. ...
- hibernate.validator.constraints.NotEmpty校验请求参数报错java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundException
spring maven项目,使用hibernate validator 注解形式校验客户端的请求参数. hibernate-validator版本:5.0.2.Final validation-ap ...
- springboot启动tomcat报错java.lang.NoClassDefFoundError: javax/el/ELManager仅记录
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'o ...
- IDEA启动Springboot时,解决报错java.lang.NoClassDefFoundError: javax/servlet/Filter
如下所示,将spring-boot-starter-tomcat依赖中的<scope>provided</scope>注释掉 <dependency> <gr ...
- 解决spring boot启动报错java.lang.NoClassDefFoundError: ch/qos/logback/classic/Level
解决spring boot启动报错java.lang.NoClassDefFoundError: ch/qos/logback/classic/Level 学习了:https://blog.csdn. ...
- 解决:启动项目报错 java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
前言:项目在 spring-mvc.xml 文件中配置了上传文件拦截,结果启动报错 java.lang.NoClassDefFoundError: org/apache/commons/fileupl ...
- Spring boot Unable to start embedded Tomcat报错 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()
Spring boot Unable to start embedded Tomcat 报错 java.lang.NoSuchMethodError: javax.servlet.ServletCon ...
- Intellij IDEA 报错java.lang.NoClassDefFoundError
Intellij IDEA 报错java.lang.NoClassDefFoundError 11-Aug-2018 23:48:24.686 严重 [http-nio-8080-exec-5] or ...
- 公司拷贝回家的工程用sts导入clean package报错java.lang.NoClassDefFoundError
从公司拷贝工程回家加班,用相同版本的sts和jdk但是run as maven build clean package 总是报错java.lang.NoClassDefFoundError: ...
随机推荐
- NVIDIA 2024 GTC大会提出的数字孪生技术 —— 工厂3D仿真与AI大模型结合
地址: https://www.youtube.com/watch?v=JQdyzQdMRS0 Fusing Real-Time AI With Digital Twins 使用NVIDIA的3D仿真 ...
- 读论文《Distilling the Knowledge in a Neural Network》——蒸馏网络 —— 蒸馏算法 —— 知识蒸馏 中的温度系数到底怎么用, temperature怎么用?
论文地址: https://arxiv.org/pdf/1503.02531.pdf 蒸馏网络的重要公式: 其中,\(p^g\)为Teacher网络,\(q\)为Student网络. 个体神经网络(C ...
- 电脑时间不同步导致的上网报错:core/proxy/vmess/encoding: failed to read response header > websocket: close 1006 (abnormal closure): unexpected EOF
报错内容: 2023/12/16 14:08:56 [Warning] [775541588] xxxxx.com/core/app/proxyman/outbound: failed to proc ...
- Codeforces 929 div3 D
题目:D. Turtle Tenacity: Continual Mods 题目链接:https://codeforces.com/contest/1933/problem/D 算法:数论.贪心. 一 ...
- spring同时集成mybatis和ibatis
最近来了一个新项目,说是新的项目,但是需要用到以前旧的模块代码,旧的模块使用架构为ssi 而新项目使用spring mvc +mybatis,考虑到工作量的问题,所以决定使用spring mvc +m ...
- stm32g070 usart 中断问题: 开启接收中断 RXNEIE 需要注意ISR的错误类型,否则会进入中断。
usart 中断问题: 开启接收中断 RXNEIE 需要注意ISR的错误类型,否则会进入中断. 调试时发现,如果ISR的ORE和FE置位,而此时要是使能RX中断(RXNEIE置位)就会进入中断复位程序 ...
- Linux内核信号SIGIO使用实例讲解
一.信号 1. 基本概念 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上, ...
- Graphics2D绘图方法总结
一.简介 在开发中可能会遇到这样一类场景,业务复杂度不算太高,技术难度不算太深,但是做起来就很容易把人整破防,伤害很高侮辱性很强的:绘图. 绘图最怕有人挑刺:这里变形,那里不对,全图失真. 最近在处理 ...
- 全网最适合入门的面向对象编程教程:39 Python常用复合数据类型-集合
全网最适合入门的面向对象编程教程:39 Python 常用复合数据类型-集合 摘要: 在 Python 中,集合(set)是一种常用的复合数据类型.集合是一组无序且不重复的元素.与列表和元组不同,集合 ...
- 使用Golang的协程竟然变慢了|100万个协程的归并排序耗时分析
前言 这篇文章将用三个版本的归并排序,为大家分析使用协程排序的时间开销(被排序的切片长度由128到1000w) 本期demo地址:https://github.com/BaiZe1998/go-lea ...