我正在开发一个Minecraft插件,其中一部分从MySQL中获取大量块数据并在服务器启动时将其加载到缓存中。我有一些代码,在Eclipse测试用例中可以正常运行。然而,当我在本地Minecraft服务器中加载插件时,会出现异常。
我查了一些资料,人们说要解决这个问题,需要包含ojdbc6.jar并将其用作连接驱动程序。
我将文件添加到项目结构中的一个名为lib的文件夹下,并将其包含到我的项目中,然后将其添加到构建文件中。 http://i.imgur.com/7TXLbjj.png 并将连接驱动程序更改为
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) ~[?:?] 等等...
引起异常的代码段。
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
但是两者都在同一台计算机上,所以我期望的值应该是相同的吗?