所以我正在构建一个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。结果集
实例从已执行的查询返回p.fieldType()
只返回一个类
稍微大一点的片段...并不是说它真的向你展示了什么。
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
但两者都在同一台电脑上,所以我希望得到相同的值?
好的,很抱歉,我重新考虑了我的方法。我没有使用反射来设置类成员的类型,而是在每个数据模型类中实现了一个将ResultSet值映射到当前对象的方法。
@Override
public Select load(ResultSet rs) throws SQLException {
this.id = rs.getInt("id");
this.name = rs.getString("name");
this.uuid = rs.getString("uuid");
this.chunkX = rs.getInt("chunkX");
this.chunkZ = rs.getInt("chunkZ");
this.blockX = rs.getInt("blockX");
this.blockY = rs.getInt("blockY");
this.blockZ = rs.getInt("blockZ");
return this;
};
至于我最初使用反射的问题,我不知道为什么失败了。
所以我有以下问题。我有一个通过JDBC连接到Redshift-DB的Java应用程序。执行一个简单的SELECT-query会生成一个不为null的ResultSet(我检查过了)。 我尝试使用不同的驱动程序版本,我尝试使用rs.getbytes(col),但结果仍然是一样的:我只是无法删除那些空值。 我还成功地完成了卸载操作,将麻烦的表卸载到S3并手动检查导出的csv文件。卸载运行没有任何问题,
问题内容: 我不知道我的代码有什么问题 这是我的片段课 这是我的SessionManager.java 运行项目时出现的错误: java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ void com.example.gandi.symanlub.SessionManager.logoutUser()” 问题答案: 您收到错误消息是因为在此行您正在调用: 会
问题内容: 我正在尝试使用用户代理将json设置为一种状态,但出现错误: 未捕获的不变违规:对象作为React子对象无效(找到:具有键{…}的对象)。如果您打算渲染孩子的集合,请使用数组代替,或者使用React附加组件中的createFragment(object)包装对象。 设置状态的方法: 服务 杰森 问题答案: 您无法执行此操作:由于您的错误提示您尝试执行的操作无效。您正在尝试将整个数组呈现
我用这个例子来理解ionic和php与mysql之间的操作,但我发现这个错误在我看来似乎是错误的,我不明白它来自哪里。奇怪的是,当我加载一个便笺时,它会工作,并加载到数据库中。 他离开了存储库,以防他们想要可视化代码https://github.com/javazika/ionic_crud_php_msqyl
所以似乎我的allFile对象包含null对象?我自己也不确定。我试着检查我想要的目录路径“~/desktop/matlab/cat_00”,它是正确的。我尝试使用调试模式检查这两行代码,发现listFiles()返回了这个异常错误。但是,我不明白为什么会出现null异常错误,因为在我创建File对象的CAT_00主目录下有文件和目录,因此应该返回这些文件和目录的路径名数组。 非常感谢您的帮助!!
错误: 我试图通过这个留档https://www.npmjs.com/package/multer来处理MulterError,但遇到了一个问题。 控制台.log(req.body)给出 { },而表单 enctype 等于“多部分/表单数据”。如果我将其更改为“应用程序/ x-www-表单-网址编码”,则req.body是正常的,但文件不会上传到服务器。 穆特用法 从保修页面使用表单enctyp