[英]Maven compilation and run time error java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)Z on Tomcat 8 Server
[英]Why do I get java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection error?
我已经阅读了尝试在数据库中加载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();
}
错误信息:
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)
问题的原因是软件不兼容(jar文件)。
createBlob
是一种新方法(在Java 1.6中引入),因此较旧的驱动程序不太可能实现它。
确保您的类路径仅包含兼容的驱动程序,而不包含任何较早版本的驱动程序。 (感谢Jochen)
正如其他人所说,这是由于Oracle JDBC驱动程序较旧所致。
在我的情况下,将ojdbc14.jar
(Oracle JDBC驱动程序10.1.0.5.0)替换为ojdbc16.jar
(Oracle JDBC驱动程序11.2.0.4.0)可以解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.