文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

(二)java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

2023-09-05 08:14

关注

不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

文章目录

1、启动报错

java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
详细报错内容:
在这里插入图片描述

2、背景

使用 JDBC 连接Oracle数据库时出现报错。示例代码如下:

DataSourceConnectionUtils.java

package com.example.jdbctemplateproject.utils;import java.sql.*;import java.util.HashMap;import java.util.Map;public class DataSourceConnectionUtils {    public static void jdbcTest(String url, String username, String password) throws ClassNotFoundException, SQLException {        //注册driver        Class.forName("oracle.jdbc.driver.OracleDriver");//建立数据库连接对象        Connection conn = DriverManager.getConnection(url, username, password);//建立操作对象        Statement stmt = conn.createStatement();//结果集        ResultSet rs = stmt.executeQuery("select * from student");        while(rs.next()) { // 转换每行的返回值到 Map 中            System.out.println("id:" + rs.getLong("id") + ",name:" + rs.getString("name"));        }//依次关闭结果集,操作对象,数据库对象        if (rs != null) {            rs.close();        }        if (stmt != null) {            stmt.close();        }        if (conn != null) {            conn.close();        }    }    public static void main(String[] args) {        try {            jdbcTest("jdbc:oracle:thin:@localhost:1521:orcl", "system", "*********");        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        }    }}

下面是已添加的Oracle驱动包、支持字符集的依赖包。
pom.xml

<dependency><groupId>com.oracle.database.jdbcgroupId><artifactId>ojdbc8artifactId><version>21.5.0.0version><scope>runtimescope>dependency><dependency><groupId>com.oracle.database.nlsgroupId><artifactId>orai18nartifactId><version>21.5.0.0version><scope>providedscope>dependency>

3、原因分析

根据提示,报错是由于缺少字符集相关的 orai18n 依赖包所致。但是检查 pom.xml 文件,发现有配置 orai18n 依赖包。经排查测试,发现跟标签内的取值有关。当 scope 取值为 provided、test (不支持运行期)时,执行main方法会出现报错;当 scope 取值为 runtime、compile (支持运行期)时,执行main方法不会出现报错。

在这里插入图片描述

4、解决方案

将 scope 的值改为 runtime 或者 compile(当然,也可以直接将 scope标签去掉,系统会默认选择compile)。如下所示:

pom.xml

<dependency><groupId>com.oracle.database.nlsgroupId><artifactId>orai18nartifactId><version>21.5.0.0version><scope>compilescope>dependency>

参考资料

来源地址:https://blog.csdn.net/Shipley_Leo/article/details/130018181

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯