【问题标题】:Can I make jdbc 4.1 source level compatible with jdk 1.6?我可以使 jdbc 4.1 源代码级别与 jdk 1.6 兼容吗?
【发布时间】:2012-09-22 09:44:01
【问题描述】:

我有扩展 java.sql.Statement、java.sql.Connection 和 java.sql.DataSource 的代码。

我的兼容性目标是 java 1.6,我不想在 jdk 1.7 中使用 JDBC 4.1 引入的特定功能。

但我系统上默认安装的 jdk 是 Openjdk 7。我想坚持使用它,但我仍然想让我的代码以 1.6 为目标。

在 Eclipse 中,我将 1.6 设置为编译目标,但 jdk 坚持我在 java.sql 类中实现新方法...我创建了存根,除了抛出 UnsupportedOperationException 之外什么都不做。所以这是我的问题:

  • 有没有办法用1.7 sdk编译1.6源代码?
  • 如果不是,只要我不使用 jdbc 4.1 特性,我选择将新方法“实现”为 UnsupportedOperationException 是否安全?
  • 有没有实现jdbc 4.1的连接池?

【问题讨论】:

  • 除了默认情况下,您还有什么特别的原因不只是使用 Java 6 吗?
  • 您认为“实现”JDBC 的连接池究竟做了什么?它只是管理连接,我看不出它与所使用的 JDBC 版本有什么关系。
  • @thorbjorn:嗯,事实上我在 Debian/Ubuntu 上使用默认包。碰巧打包器制作的openjdk-7-jdk也提供了java6-jdk。因此,它会在安装时创建符号链接来伪造 jdk6 环境。我宁愿不手动删除它们并安装我自己的 jdk。但如果这是唯一的解决方案,我当然会。
  • 如果您想在 Java 7 上使用目标 1.6 进行编译,那么您还应该指定一个包含 Java 6 rt.jar 的引导类路径。当您指定目标 1.6 时,Java 7 应该会给您一个警告(至少:Oracle JDK 会)。
  • 你可以简单地实现它来抛出 SQLFeatureNotSupportedException。 BTW:你有没有考虑过使用java.lang.reflect.Proxy 来实现它?

标签: java jdbc openjdk


【解决方案1】:

JDBC4.0是针对JDK1.6的,你应该使用条件编译来产生一个JDBC4.0兼容的包。

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 1970-01-01
    • 2015-03-07
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多