ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 关于resultset.getObject的AbstractMethodError

2019-06-23 11:48:46  阅读:446  来源: 互联网

标签:java mysql eclipse jdbc minecraft


所以我正在构建一个minecraft插件,插件的一部分从mysql中获取一堆块数据,并在服务器启动时将其加载到缓存中.我有一些在eclipse测试用例中运行良好的代码.但是,当我在本地的Minecraft服务器中加载插件时,我得到了异常.

    java.lang.AbstractMethodError: Method com/mysql/jdbc/JDBC4ResultSet.getObject(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; is abstract
            at com.mysql.jdbc.JDBC4ResultSet.getObject(JDBC4ResultSet.java) ~[spigot-1.8.8.jar:git-Spigot-db6de12-d3e0b6f]
            at fws.plugins.trigger.database.ModelDB.loadCollection(ModelDB.java:335) ~[?:?]
            at fws.plugins.trigger.database.ModelDB.all(ModelDB.java:295) ~[?:?]
etc...

抛出exeption的代码.

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

rs是从执行的查询返回的java.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上,所以我期望相同的值?

解决方法:

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

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

标签:java,mysql,eclipse,jdbc,minecraft
来源: https://codeday.me/bug/20190623/1270524.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有