traduccion - ¿Por qué obtengo errores java.lang.AbstractMethodError?
thrift python (6)
Como Damian citó:
Normalmente, este error es capturado por el compilador; este error solo puede ocurrir en tiempo de ejecución si [...]
Tuve el mismo error que el compilador no detectó, pero en tiempo de ejecución. Para resolverlo solo volví a compilar sin dar ninguna modificación al código.
¿Cuáles son las posibles causas de ABstractMethodError?
Excepción en el hilo "pool-1-thread-1" java.lang.AbstractMethodError:
org.apache.thrift.ProcessFunction.isOneway()Z
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:51)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
at com.gemfire.gemstone.thrift.hbase.ThreadPoolServer$ClientConnnection.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Desde documnentation de AbstractMethodError
Se lanza cuando una aplicación intenta llamar a un método abstracto. Normalmente, este error es capturado por el compilador; este error solo puede ocurrir en tiempo de ejecución si la definición de alguna clase ha cambiado de manera incompatible desde la última compilación del método en ejecución.
La respuesta simple es esta: algunos códigos intentan llamar a un método que se declara abstract
. Los métodos abstractos no tienen cuerpo y no pueden ser ejecutados. Dado que ha proporcionado tan poca información, realmente no puedo dar más detalles sobre cómo puede suceder esto, ya que el compilador generalmente detecta este problema, como se describe aquí, esto significa que la clase debe haber cambiado en el tiempo de ejecución.
Por lo general, significa que está utilizando una versión anterior de una implementación de interfaz a la que le falta un nuevo método de interfaz. Por ejemplo, la interfaz java.sql.Connection obtuvo un nuevo método getSchema en 1.7. Si tiene el controlador 1.6 JDBC y llama a Connection.getSchema, obtendrá AbstractMethodError.
Si está recibiendo este error en los métodos implementados, asegúrese de haber agregado sus dependencias correctamente como se menciona en este hilo .
Una especie de caso especial de la answer anterior.
Tuve este error, porque estaba usando un spring-boot-starter-parent
(por ejemplo, 2.1.0.RELEASE
usa la versión de primavera: 5.1.2.RELEASE
) pero también 5.1.2.RELEASE
una BOM
, que también definió algunas dependencias de primavera, pero en una versión anterior (ej. 5.0.9.RELEASE
).
Entonces, una cosa que debe hacer es verificar su dependency tree
(en Eclipse, por ejemplo, puede usar la Jerarquía de dependencias) si está usando las mismas versiones.
Entonces, una solución podría ser que actualice las dependencias de primavera en su BOM
, otra podría ser que las excluya (pero dependiendo de la cantidad, esto podría ser feo).