Saltar al contenido

java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String() en la aplicación Java EE

Este enunciado fue probado por nuestros expertos para asegurar la veracidad de este tutorial.

Solución:

Ese método se introdujo en Commons Codec 1.4. Esta excepción indica que tiene una versión anterior de Commons Codec en otro lugar de la ruta de clase en tiempo de ejecución de la aplicación web que tiene prioridad en la carga de clases. Verifique todas las rutas cubiertas por el classpath de tiempo de ejecución de la aplicación web. Esto incluye, entre otros, el Webapp/WEB-INF/lib, YourAppServer/lib, JRE/lib y JRE/lib/ext. Finalmente, elimine o actualice la versión anterior infractora.


Actualizar: según los comentarios, parece que no puedes localizarlo. Solo puedo sugerir comentar el código usando ese método más nuevo y luego poner la siguiente línea en su lugar:

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

Eso debería imprimir la ruta absoluta al archivo JAR desde donde se cargó durante el tiempo de ejecución.


Actualización 2: esto parecía apuntar al archivo correcto. Lo siento, no puedo explicar más tu problema en este momento. Todo lo que puedo sugerir es usar un diferente Base64 método como encodeBase64(byte[]) y luego simplemente construye un new String(bytes) tú mismo. O podría eliminar esa biblioteca y usar un codificador Base64 diferente, por ejemplo, este.

Algunas herramientas de Google, como GWT, tienen una versión integrada de commons-codec con una clase Base64 anterior a 1.4. Es posible que deba hacer que dichos JAR de herramientas sean inaccesibles para su código al refactorizar su proyecto de modo que solo las partes de su código que necesitan esas herramientas puedan ver la dependencia.

@Adam Augusta tiene razón, una cosa más

Los archivos jar de cliente Apache-HTTP también se encuentran en la misma categoría que algunas google-apis.

org.apache.httpcomponents.httpclient_4.2.jar
y commons-códec-1.4.jar ambos en classpath, es muy posible que tenga este problema.

Esto prueba a todos los frascos que están usando una versión anterior de códec común internamente y al mismo tiempo alguien usando códec común explícitamente en ruta de clases también.

Si te sientes impulsado, tienes la habilidad dejar un ensayo acerca de qué le añadirías a esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *