当前位置: 首页 > 知识库问答 >
问题:

具有InterBase JDBC驱动程序的sun/io/ByteToCharConverter

樊俊悟
2023-03-14

对于InterClient7.5.1和8.1.5,在Java8中创建新的JDBC连接失败

java.lang.NoClassDefFoundError: sun/io/ByteToCharConverter

此类似乎被InterClientJDBC库引用或使用。Java7不会发生错误。是否有方法解决此错误?

此代码重现了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);
        }
    }
}

输出:

interbase.interclient.Connection处线程“main”java.lang.NoClassDefFoundError:sun/io/ByteToCharConverter出现异常。interse.interclient.Connection上的connect(未知源)。interbase.interclient.Driver上的(未知源)。com.example.so25365952.Main.Main(Main.java:14)处java.sql.DriverManager.getConnection(DriverManager.java:664)处的connect(未知源)导致:java.lang.ClassNotFoundException:sun.io。java.net.URLClassLoader$1.run(URLClass Loader.java:372)处的ByteToCharConverter,java.security.AccessController处的java.net-URLClassLoader=1.run。在java.lang.ClassLoader.loadClass(ClassLoader.java:357)的sun.misc.Launcher$AppClassLoader加载类(Launcher.java:308)的java.net.URLCassLoader.findClass

共有3个答案

酆景辉
2023-03-14

<code>sun.io。ByteToCharConvertor</code>在java 7中已被弃用,似乎他们在java 8中删除了它。

严兴言
2023-03-14

太阳。*和sunw。*包是内部的,因此不应该使用。好像是InterClient的人搞砸了。我建议您联系他们并提供错误报告,这样他们就会知道在未来的版本中解决这个问题。

如果您迫不及待地等待未来的版本,并且愿意打破一些许可证(当然我不建议这样做)。您可以通过从此处复制代码来创建自己的sun.io.ByteToCharConverter,并使用-Xbootclasspath将其添加到引导类路径中,但这将是最后的手段。

仇正豪
2023-03-14

使用db2jcc4.jar,这是最新版本。如果您改变主意使用Java8,您需要使用它。

我有类似的问题,这个变化帮助我修复错误。

 类似资料:
  • 问题内容: 我正在尝试使用JDBC驱动程序将android应用程序连接到服务器(PostgreSQL),但是出现此错误: 我尝试了很多事情,例如在路径中添加驱动程序的地址,但没有任何效果。我遵循了本教程:http : //appliedcoffeetechnology.tumblr.com/post/10657124340,并在构建路径中添加了驱动程序JDBC4(我也尝试过JDBC3)。 每个人都

  • 对于ex,当我的chrome放在Compand提示符中时,会给出路径-/applications/google\chrome.app system.setproperty(“webdriver.chrome.driver”,“/applications/google/chrome.app”);WebDriver driver=new ChromeDriver(); driver.get(“http

  • 我的目标是使用聚合框架创建一个管道来对我的数据进行分组,然后将这个管道与java驱动程序一起使用。MongoDB v4.0.3 我使用MongoDB Compass创建了以下管道(减少到重要部分): 这导致以下(生成的)Java代码: 集合中$组阶段之前的数据如下所示: $组阶段应返回以下数据结构: 问题所在 Mongo Compass按预期预览了阶段的结果,但使用java驱动程序的阶段的结果非常

  • 我假设Selenium打开的chrome浏览会话将与google chrome本地安装相同。但是当我尝试在这个网站上搜索时,即使只是用selenium打开它并手动控制搜索过程,我会得到一个错误信息,当我使用常规chrome与我自己的个人资料或在incognito窗口中搜索结果返回良好。每当我搜索这个问题,我发现结果指出鼠标移动或点击模式提供它。但情况并非如此,因为我在打开浏览器后尝试手动控制。ht

  • 我尝试使用TNS URL、用户名和密码连接到Oracle 11i数据库。JNDI正在成功查找数据源,但我无法获得连接。相反,我看到下面的堆栈跟踪。 我的Maven设置如下。 我的Spring MVC应用程序已经部署到Tomcat 8。我的oracle jar文件位于位置。如下所示 我的web.xml配置 我不确定我做错了什么。我能够使用DriverManager API成功连接。我看了下面的帖子,

  • 我试图验证用户在我的Laravel应用程序。 我遇到以下问题: 在auth.php中使用驱动程序数据库:我可以使用auth::attempt()登录,并且auth::check正在工作,但是我不能验证登录的用户是否具有某个角色。 在auth.php中使用驱动程序雄辩:我可以使用auth::attempt()登录,但是auth::check不工作。然而,我可以检查登录用户的角色。 编辑(问题):我如