当前位置: 首页 > 面试题库 >

resultset.getObject上的AbstractMethodError

郎喜
2023-03-14
问题内容

因此,我正在构建一个minecraft插件,该插件的一部分从mysql抓取一堆数据块,并在服务器启动时将其加载到缓存中。我有一些代码可以在Eclipse测试用例中正常运行。但是,当我在本地Minecraft服务器中加载插件时,出现了异常。

    java.lang.AbstractMethodError:方法com / mysql / jdbc / JDBC4ResultSet.getObject(Ljava / lang / String; Ljava / lang / Class;)Ljava / lang / Object; 是抽象的
            在com.mysql.jdbc.JDBC4ResultSet.getObject(JDBC4ResultSet.java)处〜[spigot-1.8.8.jar:git-Spigot-db6de12-d3e0b6f]
            在fws.plugins.trigger.database.ModelDB.loadCollection(ModelDB.java:335)〜[?:?]
            在fws.plugins.trigger.database.ModelDB.all(ModelDB.java:295)〜[?:?]
等等...

抛出异常的代码。

rs.getObject( field.getName(), p.fieldType());

rsjava.sql.ResultSet从执行查询返回的实例。
p.fieldType()只是返回一个 Class<?>

片段稍大…并不是真的可以显示其他内容。

if (field.isAnnotationPresent(Persist.class)) {
    try {
        Persist p = field.getAnnotation(Persist.class);
        Object o = rs.getObject( field.getName(), p.fieldType());
        field.set(m,p.fieldType().cast(o));

    } catch (Exception e) {
        // TODO Auto-generated catch block 
        e.printStackTrace();
    } 
}

我看过网上有人说要修复,我需要包括ojdbc6.jar并将其用作我的连接驱动程序。
我将文件添加到文件夹lib下的项目结构中,将其包含到我的项目中,然后将其添加到我的构建文件中。
http://i.imgur.com/7TXLbjj.png
并将连接驱动程序更改为oracle.jdbc.OracleDriver

但是即时通讯收到相同的问题,似乎不是一个解决办法。尽管有机会我做错了一切。

谁能帮助我,提供任何见解等?

编辑**
从命令行

$ java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

从Eclipse

System.out.println(System.getProperty("java.runtime.version"));

返回1.8.0_51-b16

但是两者都在同一台PC上,所以我期望值相同吗?


问题答案:

该方法ResultSet.getObject(String columnLabel, Class<T> type)是在JDBC 4.1(Java 7)中添加的。看起来您正在使用JDBC
4.0驱动程序,而不是JDBC 4.1(或JDBC 4.2 / Java 8)驱动程序。

您可能需要更新JDBC驱动程序(Connector / J
MySQL驱动程序的最新版本是5.1.38)。



 类似资料:
  • Animal.java 我为它创建了以下自定义断言: AnimalAssert.java 编辑:基于第一个答案(cglib需要一个),我用一个no arg构造函数更新了动物类,但是抛出了相同的异常

  • 我的应用程序一直在许多Android平台上报告这个问题(4.1、4.0.4、2.3.6.…)。但我无法在我的手机上复制这个问题。我已经在Google上搜索了这个问题,但堆栈跟踪似乎与我的不一样。

  • 我有一台带有Intel CPU的Windows机器(在引导菜单上启用VMX)。我使用VirtualBox在上面运行Ubuntu Guest。我在上面运行qemu,以运行另一个Guest OS,使用kvm(选项)。 我在尝试插入kvm-intel模块时收到以下错误: 我已经检查了来宾操作系统中的vpx标志,但我也没有看到 有没有办法在来宾Ubuntu操作系统中启用kvm支持,以便我可以在Ubuntu

  • 我试图从java程序中使用Spark SQL,其中pom.xml中的依赖关系指向Spark版本1.6.0。下面是程序 但是,我在线程“main”java.lang.nosuchmethoderror:org.apache.spark.sql.sqlcontext.sql(ljava/lang/string;)lorg/apache/spark/sql/dataframe中出现异常;我正在创建一个平

  • 主机系统为ARCHLinux。我想开发需要运行Windows docker容器的.NET4.6.1应用程序。所以我在VirtualBox下运行Win10。然后我在Win10中安装Docker,以运行Windows Docker容器。Linux->VirtualBox->Win10->Docker->Windows Docker容器->要运行的应用程序。 或者更具体地说,VirtualBox是否支持

  • 问题内容: 我正在尝试根据此教程在我的应用程序中实现NotificationListenerService:http : //www.kpbird.com/2013/07/android- notificationlistenerservice.html ,但是调用getActiveNotifications时出现NullPointerException。 我正在向该服务发送广播,该广播应生成所有