java.lang.NoClassDefFoundError: javax/transaction/TransactionManager 解决 只需一个jta.jar文件

早上上班打开电脑,发现应用启动出问题了,提示:java.lang.NoClassDefFoundError: javax/transaction/TransactionManager, 于是google了一下,原来是少了jta.jar。奇怪,原来好好的,今天怎么少了呢? 是不是我Eclipse出问题了。

 

jta.jar 下载地址:

1,http://java.sun.com/products/jta/  下载类文件 Class Files,然后自己打包成jar文件,或者直接修改后缀名zip为jar

2,优快云下载 http://download.youkuaiyun.com/source/337356

 

具体出错信息如下:

  1. Caused by: 
  2. java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
  3.     at java.lang.Class.getDeclaredMethods0(Native Method)
  4.     at java.lang.Class.privateGetDeclaredMethods(Class.java:2365)
  5.     at java.lang.Class.getDeclaredMethods(Class.java:1763)
  6.     at java.beans.Introspector$1.run(Introspector.java:1265)
  7.     at java.security.AccessController.doPrivileged(Native Method)
  8.     at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1263)
  9.     at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1129)
  10.     at java.beans.Introspector.getBeanInfo(Introspector.java:387)
  11.     at java.beans.Introspector.getBeanInfo(Introspector.java:159)
  12.     at org.springframework.beans.CachedIntrospectionResults.<init>(CachedIntrospectionResults.java:142)
  13.     at org.springframework.beans.CachedIntrospectionResults.forClass(CachedIntrospectionResults.java:83)
  14.     at org.springframework.beans.BeanWrapperImpl.setIntrospectionClass(BeanWrapperImpl.java:239)
  15.     at org.springframework.beans.BeanWrapperImpl.setWrappedInstance(BeanWrapperImpl.java:197)
  16.     at org.springframework.beans.BeanWrapperImpl.setWrappedInstance(BeanWrapperImpl.java:180)
  17.     at org.springframework.beans.BeanWrapperImpl.<init>(BeanWrapperImpl.java:133)
  18.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:535)
  19.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:375)
  20.     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
  21.     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
  22.     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
  23.     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
  24.     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:246)
  25.     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128)
  26.     at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:332)
  27.     at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:97)
  28.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:578)
  29.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:371)
  30.     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
  31.     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
  32.     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
  33.     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
  34.     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:246)
  35.     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128)
  36.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:850)
  37.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:624)
  38.     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:411)
  39.     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
  40.     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
  41.     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
  42.     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
  43.     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:304)
  44.     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:348)
  45.     at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
  46.     at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
  47.     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
  48.     at org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:83)
  49.     at javax.servlet.GenericServlet.init(GenericServlet.java:211)
  50.     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
  51.     at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
  52.     at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3951)
  53.     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4225)
  54.     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
  55.     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
  56.     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
  57.     at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:608)
  58.     at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:535)
  59.     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
  60.     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
  61.     at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
  62.     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
  63.     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
  64.     at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
  65.     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
  66.     at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
  67.     at org.apache.catalina.core.StandardService.start(StandardService.java:450)
  68.     at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
  69.     at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
  70.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  71.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  72.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  73.     at java.lang.reflect.Method.invoke(Method.java:585)
  74.     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
  75.     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
### 解决方案 `java.lang.NoClassDefFoundError: javax/sql/DataSource` 错误通常表明在运行时缺少 `javax.sql.DataSource` 类。此问题可能由多种原因引起,以下是详细的分析和解决方案。 #### 1. 缺少必要的依赖项 如果项目的构建工具(如 Maven 或 Gradle)未正确引入包含 `javax.sql.DataSource` 的 JAR 文件,则可能会发生该错误。确保项目中已添加以下依赖项: 对于 Maven 构建文件: ```xml <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.activation</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> ``` 对于 Gradle 构建文件: ```gradle implementation 'jakarta.servlet:jakarta.servlet-api:5.0.0' runtimeOnly 'com.h2database:h2' ``` 这些依赖项提供了 `javax.sql.DataSource` 所需的核心功能[^1]。 #### 2. 运行环境不匹配 某些情况下,开发环境中存在所需的库,但生产或测试环境中缺失。这可能是由于配置不当引起的。例如,在 Spring Boot 中使用嵌入式 Tomcat 服务器时,若将 `spring-boot-starter-tomcat` 设置为 `<scope>provided</scope>`,则可能导致运行时无法加载相关类。因此,建议检查并调整依赖范围以适应实际需求。 #### 3. JDK 版本升级影响 自 Java EE 转型至 Jakarta EE 后,部分 API 名称空间发生了变化。例如,从 Java 9 开始,`javax.*` 命名空间逐渐被替换为 `jakarta.*`。如果你正在迁移旧版应用程序到较新的 JDK 上执行,请确认所使用的框架版本支持当前命名约定,并相应更新 POM 或 build.gradle 配置文件中的条目[^2]。 #### 示例代码片段 假设我们正尝试通过 JDBC 数据源连接数据库,可以按照如下方式设置数据源对象实例化过程: ```java import javax.sql.DataSource; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; public class DatabaseConfiguration { public static DataSource getDataSource() { HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost:3306/testdb"); config.setUsername("root"); config.setPassword("password"); return new HikariDataSource(config); } } ``` 以上示例展示了如何利用第三方库 (HikariCP) 创建兼容的标准 SQL 数据源接口实现[^2]。 #### 总结 要彻底解决 `java.lang.NoClassDefFoundError: javax/sql/DataSource` 问题,应仔细核查以下几个方面:是否存在遗漏的关键外部库;是否因不同阶段间资源供应差异造成冲突;以及目标平台特性改变带来的适配挑战等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值