所以我正在构建一个@R_502_5886@craft插件,插件的一部分从mysql中获取一堆块数据,并在服务器启动时将其加载到缓存中.我有一些在eclipse测试用例中运行良好的代码.但是,当我在本地的@R_502_5886@craft服务器中加载插件时,我得到了异常.
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).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。