2011-05-20 9 views
5

Ya leí Why do I get java.lang.AbstractMethodError when trying to load a blob in the db?, descargué todos los controladores jdbc 11g que pude encontrar y los agregué como bibliotecas y/o archivos jar a mi aplicación NetBeans. ¡Sigo recibiendo el mismo AbstractMethodError y me está volviendo loco! Cualquier orientación sería muy apreciada!¿Por qué sigo obteniendo el error "java.lang.AbstractMethodError: oracle.jdbc.driver.OracleConnection"? Me está volviendo loco. .

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(); 
} 

El mensaje de error:

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) 
+1

Ya leyó la otra pregunta, pero no veo nada que haga que esta pregunta _no_ sea un doble. –

+6

Lo primero es lo primero: asegúrese de que classpath solo contenga los controladores necesarios de JDBC 4.0 para Oracle, no de ningún controlador anterior –

+1

posible duplicado de [¿Por qué obtengo java.lang.AbstractMethodError cuando intento cargar un blob en el db?] (Http : //stackoverflow.com/questions/1194990/why-do-i-get-java-lang-abstractmethoderror-when-trying-to-load-a-blob-in-the-db) – EJP

Respuesta

10

La causa del problema es el software incompatibles (archivos JAR).

createBlob es un método nuevo (introducido en Java 1.6), por lo que es poco probable que los controladores antiguos lo implementen.

Asegúrese de que su classpath solo contenga controladores compatibles, y no ninguna versión anterior de los controladores. (Gracias Jochen)

+2

gracias, gracias, gracias, gracias, gracias, gracias, gracias, gracias, gracias, gracias, gracias, gracias, gracias, gracias, siento que ahora tienes solo +1, estoy de humor para +100 :) – elrado

2

Como han dicho otros, esto se debe a un controlador Oracle JDBC anterior.

En mi caso, el reemplazo de ojdbc14.jar (controlador JDBC de Oracle 10.1.0.5.0) con ojdbc16.jar (controlador Oracle JDBC 11.2.0.4.0) solucionado el problema.

Cuestiones relacionadas