使用 InterBase JDBC 驱动程序时出现 NoClassDefFoundError sun/io/ByteToCharConverter

2024-03-23

对于 InterClient 7.5.1 和 8.1.5,在 Java 8 中创建新的 JDBC 连接失败,并显示

java.lang.NoClassDefFoundError: sun/io/ByteToCharConverter

这个类似乎被 InterClient JDBC 库引用或使用。 Java 7 中不会出现此错误。有没有办法解决此错误?


此代码在 Java 8 上重现了该问题:

package com.example.so25365952;

import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Main {
    interbase.interclient.Connection conn; 

    public static void main(String[] args) {
        try {
            Class.forName("interbase.interclient.Driver");           
            DriverManager.getConnection("jdbc:interbase://localhost/data/mydb.gdb", "sysdba", "password123");           
        } catch (ClassNotFoundException | SQLException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Output:

线程“main”java.lang.NoClassDefFoundError 中出现异常: sun/io/ByteToCharConverter 位于 interbase.interclient.Connection.connect(来源未知)位于 interbase.interclient.Connection.(来源未知)位于 interbase.interclient.Driver.connect(来源未知)位于 java.sql.DriverManager.getConnection(DriverManager.java:664) 在 java.sql.DriverManager.getConnection(DriverManager.java:247) 在 com.example.so25365952.Main.main(Main.java:14) 原因: java.lang.ClassNotFoundException:sun.io.ByteToCharConverter at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:360) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 6 更多


Use db2jcc4.jar这是最新版本。如果您改变主意使用Java 8你需要使用这个。

我遇到了类似的问题,此更改帮助我修复了错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 InterBase JDBC 驱动程序时出现 NoClassDefFoundError sun/io/ByteToCharConverter 的相关文章

随机推荐