【发布时间】:2016-01-27 15:33:33
【问题描述】:
我们可能很快就会追踪司机,但我想知道是否有人看到了这个。一些(第 3 方库)代码对从 Oracle JDBC 驱动程序获得的结果集执行 rs.next(),然后调用 rs.getLong() 以从 NUMBER 列中获取 long。多年来,所有这些都适用于各种版本的 Oracle、JDBC、操作系统等,但在特定的机器上,Oracle 12.1.0.2 和 ojdbc7 jar 用于该确切版本(12.1.0.2,来自http://www.oracle.com/technetwork/database/features/jdbc/default-2280470.html ),会发生以下异常:
java.lang.NullPointerException
at java.lang.System.arraycopy(Native Method)
at oracle.jdbc.driver.DynamicByteArray.get(DynamicByteArray.java:350)
at oracle.jdbc.driver.NumberCommonAccessor.getLong(NumberCommonAccessor.java:546)
at oracle.jdbc.driver.GeneratedStatement.getLong(GeneratedStatement.java:228)
at oracle.jdbc.driver.GeneratedScrollableResultSet.getLong(GeneratedScrollableResultSet.java:564)
不幸的是 ojdbc 不是开源的。 这是一个已知的问题? 有没有其他的 jdbc 驱动可以试试?
【问题讨论】:
-
看不懂中文,但f.dataguru.cn/thread-315841-1-1.html也提到了同样的异常
-
这似乎是特定 JVM 中的问题,而不是驱动程序中的问题。您在哪个操作系统(供应商、版本、构建)上运行什么 JVM(供应商、版本、构建)?特别是当你看到它只发生在一台特定的机器上(猜你在其他机器上测试过并且无法在那里重现)它几乎肯定是特定于那台机器的东西(当然它也可能是数据,在这种情况下你会得到与另一台机器上完全相同的数据相同)。