我可以使 jdbc 4.1 源代码级别与 jdk 1.6 兼容吗?
Posted
技术标签:
【中文标题】我可以使 jdbc 4.1 源代码级别与 jdk 1.6 兼容吗?【英文标题】:Can I make jdbc 4.1 source level compatible with 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
来实现它?
【参考方案1】:
JDBC4.0是针对JDK1.6的,你应该使用条件编译来产生一个JDBC4.0兼容的包。
【讨论】:
以上是关于我可以使 jdbc 4.1 源代码级别与 jdk 1.6 兼容吗?的主要内容,如果未能解决你的问题,请参考以下文章