bigdata-mx / factura-electronica

Librería de componentes Java para el desarrollo de aplicaciones de Factura Electrónica (CFDI)
Apache License 2.0
94 stars 107 forks source link

CFDv33.sellar: NoSuchMethodError: org.apache.commons.codec.binary.Base64 #183

Open heliogutierrez opened 6 years ago

heliogutierrez commented 6 years ago

Buen día,

Implementé la nueva librería para el timbrado con la versión 3.3 pero me aparece este error al llegar al renglon donde sella:

**java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.(I)V

at mx.bigdata.sat.cfdi.CFDv33.sellar(CFDv33.java:151) at mx.bigdata.sat.cfdi.CFDv33.sellarComprobante(CFDv33.java:160)**

Instalé la librería commons-code versión 1.11 pero sigue apareciendo el error. Hay algún orden en que debieran estar las librerías de java?

Saludos.

SAAVER commented 6 years ago

Buen dia @heliogutierrez, segun mi poca experiencia con las librerias de java, debes utilizar commons-code-1.4.jar, actualmente esa se encuentra en mi proyecto y funciona correctamente.

Saludos, ojala eso resuelva el problema.

hortegag91 commented 6 years ago

@heliogutierrez tal vez estes teniendo conflictos con otras de tus librerias del proytecto, te recomiendo abrir tu archivo jar (el de tu proyecto) con winrar, y revisar en META-INF el archvo manifiest, ahi debe decir todas las librerias a las que tu sistema llama. Asegurate que la librería esté en dicha ruta, ya que en ocaciones, otras librerias hacen uso de diferentes versiones, y entran en cnflictos.

heliogutierrez commented 6 years ago

Pues encontré muchas versiones commons-codec en mi proyecto y todas las he sustituído por la que menciona @SAAVER commons-codec-1.4.jar incluyendo las referencias en los archivos build.xml y sigue enviando el mismo error, ya busqué con Eclipse todo lo que haga mención de commons-codec y no encuentro de dónde esté tomando la versión diferente del jar.

hortegag91 commented 6 years ago

@heliogutierrez antes hay que identificar explicitamente el error, la manera de ver si es conflicto de jars, es siguiendo los pasos que te estoy indicando en la respuesta hace 15 días, asi sabremos exactamente si ese es el problema, y de ser asi será más fácil de resolver. Te pido si pudieras publicar lo que encuentres en el archivo manifiest.

heliogutierrez commented 6 years ago

@hortegag91 El proyecto donde estoy utilizando la librería se llama Adempiere, es un ERP en java 1.7 que corre con servidor jboss y framework ZK, el archivo que ejecuta es un war, y dentro de este en la carpeta META-INF está vacía, de hecho no he visto ningún archivo llamado manifiest. Existen archivos build.xml en cada módulo y es ahí donde he modificado que mande llamar el jar que necesito.

Aqui dejo el archivo build.xml del módulo principal que estoy ejecutando (webui.war): build.xml.txt

heliogutierrez commented 6 years ago

Hay manera de desplegar en consola la ubicación de la clase Base64.class que está tomando?

heliogutierrez commented 6 years ago

Ya resolví el error con la siguiente instrucción supe cual librería estaba tomando eliminándola y ya toma la versión correcta.

System.out.println(Base64.class.getProtectionDomain().getCodeSource().getLocation());