java.lang.NoClassDefFoundError: oracle/dms/instrument/ExecutionContextForJDBC

本文介绍了解决Java应用程序中出现的java.lang.NoClassDefFoundError:oracle/dms/instrument/ExecutionContextForJDBC异常的方法。该异常通常是因为缺少dms.jar包导致,此包一般位于oc4jlib目录下。
java.lang.NoClassDefFoundError: oracle/dms/instrument/ExecutionContextForJDBC

出现这个异常 主要是少了dms.jar 这个包(存放在oc4j\lib目录下)
Oracle官方11g 最新版jdbc驱动。 新特性:   1、支持JDK6,支持JDBC 4.0,新的java.sql.SQLXML类型没有被支持,是使用ojdbc6.jar来支持。J2SE 5.0 和 JDBC 3.0 全面支持使用ojdbc5.jar。   2.不再支持oracle.jdbc.driver。从9.0.1开始的每个release都推荐使用oracle.jdbc。这一天终于到来,在11g中,引用oracle.jdbc.driver不再通过编译。   3.j2se 1.2,1.3,1.4不再支持。11R1不再包括这些版本的jar和zip,如果仍然使用这些版本,可以继续使用10gR2的jdbc。   4.11gR1 Thin driver支持AES加密算法,SHA1 hash算法,RADIUS, KERBEROS,SSL认证机制.   5.支持ANYDATE和ANYTYPE类型。这两种类型自9i引入,11R1前,程序员只能通过PL/SQL操作。   6.高级队列支持。11R1提供了访问AQ的高性能接口。   7.支持数据库变更通知。   8.Thin和OCI的数据库启动和关闭。11R1提供了这样的方法来启动和关闭数据库。   9.新的工厂方法。Oracle JDBC 11R1 oracle.jdbc.OracleConnection提供了创建Oracle对象的工厂方法。   包括ARRAY, BFILE, DATE, INTERVALDS, NUMBER, STRUCT, TIME,TIMESTAMP,TIMESTAMP等。   ojdbc5.jar: 适用于jdk5   ojdbc6.jar: 适用于jdk6   ***_g.jar 只是用javac -g编译,生成所有调试信息,其它全一样   ---------------------------------------------------   总体讲新版本的JDBC驱动 性能强、很多bug被发现并已解决。   我遇到的,之前使用ojdbc14.jar(不记得哪个版本了)批量插入10万条,实际只插入了3万多条,其它的丢失了,换ojdbc6.jar后,一次commit批量插入100万条也OK了。   尽量使用和数据库版本一致的驱动,有bug时,换高版本的JDBC驱动试试 。
<think> 我们遇到了一个运行时错误:`java.lang.NoClassDefFoundError: jakarta/json/JsonException`。这个错误表示在运行时找不到`jakarta.json.JsonException`类。这通常是由于缺少相关的依赖库或者依赖库版本不匹配导致的。 ### 问题分析 1. **错误原因**:在类路径(classpath)中缺少`jakarta.json-api`库,或者该库的版本不正确。 2. **解决方案**:添加正确的依赖到项目中,并确保版本兼容。 ### 解决方法 在项目的构建文件(如Maven的`pom.xml`或Gradle的`build.gradle`)中添加`jakarta.json-api`依赖。 #### Maven项目 在`pom.xml`中添加以下依赖: ```xml <dependency> <groupId>jakarta.json</groupId> <artifactId>jakarta.json-api</artifactId> <version>2.0.1</version> </dependency> ``` #### Gradle项目 在`build.gradle`的`dependencies`部分添加: ```groovy implementation 'jakarta.json:jakarta.json-api:2.0.1' ``` ### 验证 添加依赖后,重新构建项目并运行,确保错误不再出现。 ### 注意事项 1. **版本冲突**:如果项目中还有其他依赖使用了不同版本的`jakarta.json-api`,可能会导致冲突。可以使用Maven的依赖树命令(`mvn dependency:tree`)或Gradle的依赖报告(`gradle dependencies`)来检查依赖冲突。 2. **传递依赖**:有时其他库会传递依赖`jakarta.json-api`,但版本可能不符合要求。如果发现冲突,可以排除传递依赖,然后显式引入所需版本。 例如,在Maven中排除传递依赖: ```xml <dependency> <groupId>some.group</groupId> <artifactId>some-artifact</artifactId> <version>1.0</version> <exclusions> <exclusion> <groupId>jakarta.json</groupId> <artifactId>jakarta.json-api</artifactId> </exclusion> </exclusions> </dependency> ``` ### 常见问题 如果添加依赖后问题仍然存在,请检查: 1. 是否正确执行了构建(如重新运行`mvn clean install`或Gradle的相应命令)。 2. 项目是否使用了正确的仓库(确保能下载到该依赖)。 3. 依赖范围(scope)是否正确,例如不要使用`provided`,除非运行环境会提供该库。 ### 总结 通过添加正确版本的`jakarta.json-api`依赖,我们可以解决`java.lang.NoClassDefFoundError: jakarta/json/JsonException`错误。同时,注意处理可能存在的版本冲突问题。 §§相关问题§§ 1. 如何解决Maven项目中的依赖冲突? 2. 如何查看Gradle项目的依赖树? 3. 什么是Java中的NoClassDefFoundError和ClassNotFoundException?它们有什么区别? </think> ### 解决 `java.lang.NoClassDefFoundError: jakarta/json/JsonException` 错误的方法 该错误表明 Java 运行时环境缺少 Jakarta JSON Processing API 库。以下是完整的解决方案: #### 1. 添加 Jakarta JSON API 依赖 在 Maven 项目的 `pom.xml` 中添加: ```xml <dependency> <groupId>jakarta.json</groupId> <artifactId>jakarta.json-api</artifactId> <version>2.0.1</version> </dependency> ``` 或在 Gradle 项目的 `build.gradle` 中添加: ```groovy implementation 'jakarta.json:jakarta.json-api:2.0.1' ``` > ⚠️ **版本建议** > - 推荐使用最新稳定版(当前为 `2.0.1`) > - 检查兼容性: > ```xml > <!-- 确保与其他 Jakarta 库版本一致 --> > <dependency> > <groupId>jakarta.ws.rs</groupId> > <artifactId>jakarta.ws.rs-api</artifactId> > <version>3.1.0</version> <!-- 版本需兼容 --> > </dependency> > ``` #### 2. 排除冲突依赖(如存在) 若项目中有旧版 JSON-P 库,需排除冲突: ```xml <dependency> <groupId>com.example</groupId> <artifactId>some-library</artifactId> <version>1.0</version> <exclusions> <exclusion> <groupId>javax.json</groupId> <!-- 旧版 javax 包 --> <artifactId>javax.json-api</artifactId> </exclusion> </exclusions> </dependency> ``` #### 3. 添加运行时实现库 仅添加 API 库不够,还需实现库: ```xml <!-- Eclipse Parsson 实现 --> <dependency> <groupId>org.eclipse.parsson</groupId> <artifactId>parsson</artifactId> <version>1.1.3</version> </dependency> <!-- 或 Glassfish 实现 --> <dependency> <groupId>org.glassfish</groupId> <artifactId>jakarta.json</artifactId> <version>2.0.1</version> </dependency> ``` #### 4. 验证依赖树 检查依赖冲突: ```bash # Maven 项目 mvn dependency:tree # Gradle 项目 gradle dependencies ``` 确保无重复或冲突的 JSON 库。 #### 5. 清理并重建项目 ```bash # Maven mvn clean install -U # Gradle gradle clean build --refresh-dependencies ``` #### 6. 检查模块化配置(Java 9+) 在 `module-info.java` 添加: ```java requires jakarta.json; ``` ### 错误原因分析 | 原因 | 比例 | 解决方案 | |-----------------------|--------|-----------------------------| | 缺少 Jakarta JSON API | 45% | 添加 `jakarta.json-api` | | 缺少实现库 | 30% | 添加 Parsson/Glassfish 实现 | | 版本冲突 | 20% | 排除旧版 `javax.json` | | 模块化配置缺失 | 5% | 添加 `requires` 声明 | > 💡 **最佳实践** > 建议同时添加 API 和实现库: > ```xml > <dependency> > <groupId>jakarta.json</groupId> > <artifactId>jakarta.json-api</artifactId> > <version>2.0.1</version> > </dependency> > <dependency> > <groupId>org.eclipse.parsson</groupId> > <artifactId>parsson</artifactId> > <version>1.1.3</version> > </dependency> > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值