Почему я получаю ошибку java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection? - PullRequest
6 голосов
/ 20 мая 2011

Я уже прочитал Почему я получаю 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)

Ответы [ 2 ]

11 голосов
/ 20 мая 2011

Причиной проблемы является несовместимое программное обеспечение (файлы JAR).

createBlob - это новый метод (введен в java 1.6), поэтому маловероятно, что старые драйверы его реализуют.

Убедитесь, что ваш путь к классам содержит только совместимые драйверы, а не какие-либо более ранние версиииз водителей.(Спасибо, Йохен)

4 голосов
/ 18 августа 2016

Как уже говорили другие, это связано с более старым драйвером Oracle JDBC.

В моем случае замена ojdbc14.jar (драйвер Oracle JDBC 10.1.0.5.0) на ojdbc16.jar (драйвер Oracle JDBC 11.2.0.4.0) устранила проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...