为什么会出现 java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection 错误?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6066570/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Why do I get java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection error?
提问by Mike
I already read Why do I get java.lang.AbstractMethodError when trying to load a blob in the db?, downloaded all of the 11g jdbc drivers I could find, and added them as libraries and/or jar files to my NetBeans application. I still keep getting the same AbstractMethodError and it is driving me batty! Any guidance would be greatly appreciated!
我已经阅读了 为什么在尝试在数据库中加载 blob 时会出现 java.lang.AbstractMethodError 错误?,下载了我能找到的所有 11g jdbc 驱动程序,并将它们作为库和/或 jar 文件添加到我的 NetBeans 应用程序中。我仍然不断收到相同的 AbstractMethodError ,这让我很生气!任何指导将不胜感激!
try {
stmt = conn.createStatement();
inputFileInputStream = new FileInputStream(inputBinaryFile);
Blob vBlob = conn.createBlob();
BufferedImage vGImage=ImageIO.read(name);
int offset =0;
OutputStream out = vBlob.setBinaryStream(offset);
ImageIO.write(vGImage, "JPG", out);
PreparedStatement stat = conn.prepareStatement("INSERT INTO item VALUES (?,?,?,?,?)");
stat.setString(1, itemNo);
stat.setString(2, itemName);
stat.setBlob(3,vBlob);
stat.setString(4, invenType);
stat.setDouble(5, vPrice);
stat.executeUpdate();
} catch (IOException e) {
System.out.println("Caught I/O Exception: (Write BLOB value - Put Method).");
e.printStackTrace();
throw e;
} catch (SQLException e) {
System.out.println("Caught SQL Exception: (Write BLOB value - Put Method).");
System.out.println("SQL:\n" + sqlText);
e.printStackTrace();
throw e;
}finally {
conn.close();
}
The error message:
错误信息:
Exception in thread "main" java.lang.AbstractMethodError:
oracle.jdbc.driver.OracleConnection.createBlob()Ljava/sql/Blob;
at DatabaseIO.setOracleDBBlob(DatabaseIO.java:115)
at DatabaseIO.main(DatabaseIO.java:26)
回答by Klas Lindb?ck
The cause of the problem is incompatible software (jar files).
问题的原因是不兼容的软件(jar 文件)。
createBlob
is a new method (introduced in java 1.6), so older drivers are very unlikely to implement it.
createBlob
是一种新方法(在 java 1.6 中引入),因此较旧的驱动程序不太可能实现它。
Make sure your classpath only contains compatible drivers, and not any earlier versions of the drivers. (Thanks Jochen)
确保您的类路径仅包含兼容的驱动程序,而不包含任何早期版本的驱动程序。(感谢乔臣)
回答by isapir
As others have said this is due to an older Oracle JDBC driver.
正如其他人所说,这是由于较旧的 Oracle JDBC 驱动程序所致。
In my case replacing ojdbc14.jar
(Oracle JDBC driver 10.1.0.5.0) with ojdbc16.jar
(Oracle JDBC driver 11.2.0.4.0) fixed the problem.
在我的情况下,用ojdbc14.jar
(Oracle JDBC 驱动程序 11.2.0.4.0)替换(Oracle JDBC 驱动ojdbc16.jar
程序 10.1.0.5.0)解决了这个问题。