java.lang.AbstractMethodError:方法com / extendedsystems / jdbc / advantage / ADSDatabaseMetaData.supportsSavepoints()Z是抽象的

时间:2018-07-09 16:07:00

标签: jdbc database-connection advantage-database-server

我有一个使用Advantage DB的客户端,并且正在尝试使用JDBC进行连接。 我的网址如下

jdbc:extendedsystems:advantage://localhost:6262;catalog=C:\Program Files (x86)\company\CMWin\Data\cmwin.add

当我连接时(当前正在使用datagrip,但其他所有东西都是相同的错误),我得到

java.lang.AbstractMethodError: Method com/extendedsystems/jdbc/advantage/ADSDatabaseMetaData.supportsSavepoints()Z is abstract

我知道JDBC驱动程序可以工作,但是我不确定100%出了什么问题。

此刻我看到了表格,但是当我尝试访问它们时,出现了上述错误以及

SELECT t.* FROM table t java.lang.AbstractMethodError: Method com/extendedsystems/jdbc/advantage/ADSDatabaseMetaData.supportsSavepoints()Z is abstract at com.extendedsystems.jdbc.advantage.ADSDatabaseMetaData.supportsSavepoints(Unknown Source) at com.intellij.database.remote.jdbc.impl.RemoteDatabaseMetaDataImpl.supportsSavepoints(RemoteDatabaseMetaDataImpl.java:1350) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346) at sun.rmi.transport.Transport$1.run(Transport.java:200) at sun.rmi.transport.Transport$1.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) (no stack trace)

1 个答案:

答案 0 :(得分:2)

supportsSavePoints方法是JDBC 3(Java 1.4)中引入的。 AbstractMethodError建议此驱动程序仅实现JDBC 2.1(Java 1.3 iirc),或者甚至仅实现较旧的JDBC版本。

their most recent documentation支持此功能,它表示:

  

Advantage JDBC驱动程序支持JDBC 2.0 Core接口。它是   使用JDK / JRE 1.3进行编译和测试。 Advantage JDBC驱动程序   可以连接到Advantage Database Server 7.0或更高版本

与数据库的供应商(或驱动程序,如果它是单独的供应商)联系,并询问他们是否存在实现更多“最新” JDBC功能的驱动程序版本(有意将其引述为最新版本,因为JDBC 3始于2001年12月)。 JDBC规范的当前版本是JDBC 4.3,它是Java 9引入的。

您根本无法期望软件能够满足古老的JDBC实现。 DatabaseMetaData.supportsXXX()方法可供应用程序发现功能支持,并且应该可以预期在JDBC引入后17年,它应该可以安全使用。请注意,Datagrip可能希望获得JDBC 4.1(Java 7)甚至更高的支持。