gpt4 book ai didi

java - 如何使 JDBC 驱动程序在 Java 5 和 6 中工作?

转载 作者:搜寻专家 更新时间:2023-11-01 01:48:32 25 4
gpt4 key购买 nike

Java 6 附带 JDBC 4,它不向后兼容 Java 以前版本附带的 JDBC。

我们有一个 JDBC 驱动程序,它必须同时支持 Java 5 和 Java 6。如果我在驱动程序中实现新接口(interface),它在 Java 5 中不起作用,因为这些接口(interface)也使用新类。所以我们有 2 个版本的驱动程序。有没有办法让一个 jar 同时适用于 Java 5 和 6?

最佳答案

如果您实现了一个 JDBC 3.0 驱动程序,而您的客户端在 Java 6 中运行它,那么如果它们调用任何新的 JDBC 4.0 方法,它们就会出错。这种情况很少见,因为这些新方法并不经常使用,但如果您想万无一失,下面的解决方案(这是一种 hack)应该可以解决问题:

  1. 使用 java 5 编译(如果使用 java 6 编译并在 java 5 中运行,则会出现版本不匹配错误)
  2. 实现普通的 JDBC 3.0 驱动程序,但也包括新的 JDBC 4.0 方法的实现(注意:这会导致编译错误,因为 java 5 没有定义像 java.sql.NClob 这样的类型)
  3. 在单独的项目中创建新 JDBC 4.0 接口(interface)(如 java.sql.NClob)的精确副本(因此现在有 2 个项目:原始项目和这个项目)
  4. 将两个项目编译在一起,并为每个项目制作一个单独的 jar:
    • 您的 JDBC 驱动程序实现(保留此 jar)
    • 新的 JDBC 4.0 接口(interface)(丢弃这个 jar)

我们可以丢弃 JDBC 4.0 接口(interface) jar,因为:

  • 在 Java 6 中,定义了那些新的 JDBC 4.0 接口(interface)
  • 在 Java 5 中,JDBC 3.0 接口(interface)未定义新方法(如 Connection.createNClob()),因此您的用户不会调用它们

唯一的潜在问题可能是 java 5 类加载器。如果找不到新的 JDBC 4.0 接口(interface)(如 java.sql.NClob),它可能会失败。我不认为这会发生在 Sun JVM 中,除非您调用一个返回这些新接口(interface)之一的方法,所以您应该做好。如果我错了并且这是一个问题,那么在 Java 5 中运行时,只需将丢弃的 jar(定义新 JDBC 4.0 接口(interface)的那个)放在类路径中即可。

关于java - 如何使 JDBC 驱动程序在 Java 5 和 6 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1238252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com