【发布时间】: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来实现它?