es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

NoSuchMethodError: com.sun.mail.util.TraceInputStream Tomcat9 jdk1.8.0_281 NoSuchMethodError: com.sun.mail.util.TraceInputStream Tomcat9 jdk1.8.0_281

Necesito un poco de ayuda para entender un error que, espero, será fácil de resolver para un desarrollador experimentado 🙂

Desarrollo una aplicación Java EE, acabo de reinstalar mi servidor (Ubuntu) y ahora mi aplicación no puede enviar correos electrónicos.

Desde mi entorno local todavía puedo enviar correos electrónicos (Eclipse, Tomcat9, jdk1.8.0_281).
Pero desde mi servidor obtengo el siguiente error:

java.lang.NoSuchMethodError: com.sun.mail.util.TraceInputStream.<init>(Ljava/io/InputStream;Lcom/sun/mail/util/MailLogger;)V
                at com.sun.mail.smtp.SMTPTransport.initStreams(SMTPTransport.java:2016)
                at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1936)
                at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)

No puedo entenderlo porque mi servidor también ejecuta Tomcat9 y especialmente instalé jdk1.8.0_281.
(Instalé el JDK y configuré JAVA_HOME=/usr/lib/jvm/jdk1.8.0_281 en /etc/default/tomcat9)

Exporté mi proyecto desde Eclipse, debería tener todas las bibliotecas y no puedo ver qué es diferente en los dos entornos.

¿Tienes alguna sugerencia o solución?
¡Gracias y te deseo un feliz año nuevo!

Adrien

Editando siguiendo el consejo de Matt
Entonces agregué -verbose:class al parámetro de Java, tanto en mi entorno de desarrollo local como en mi servidor, y busqué clases interesantes para nuestro propósito. Como sospechamos, hay una diferencia entre los dos entornos, aquí:

En la PC local:
[Loaded com.sun.mail.util.TraceInputStream from file:/D:/EclipseWorkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/MyApp/WEB-INF/lib/javax.mail.jar]

En el servidor de Ubuntu:
[2022-01-03 20:21:28]

[Loaded com.sun.mail.util.TraceInputStream from file:/var/lib/tomcat9/webapps/MyApp%23%232.02/WEB-INF/lib/mailapi.jar]

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hola Adrien,

    Parece haber conflictos de versión o dependencias faltantes en tu servidor Ubuntu. El mensaje de error que publicaste indica que la clase TraceInputStream no se puede encontrar o inicializar correctamente en la clase com.sun.mail.smtp.SMTPTransport.

    Una sugerencia que tengo es agregar la opción -verbose:class a tus parámetros de Java tanto en tu máquina local como en tu servidor. Esto mostrará información sobre cada clase que se carga durante la ejecución. Luego puedes comparar la salida entre los dos entornos y buscar cualquier diferencia o clase faltante.

    Según la salida que publicaste, parece haber una diferencia en la ubicación y versión del paquete javax.mail. En tu máquina local, la clase TraceInputStream se carga desde el archivo javax.mail.jar ubicado en tu espacio de trabajo de Eclipse, mientras que en tu servidor se carga desde el archivo mailapi.jar ubicado en el directorio WEB-INF/lib de tu aplicación.

    Puedes verificar si el paquete javax.mail está instalado correctamente en tu servidor y si la versión es compatible con las dependencias de tu aplicación. Además, asegúrate de que la aplicación en tu servidor esté utilizando la misma versión del paquete javax.mail que tu máquina local.

    ¡Espero que esto te ayude! ¡Feliz Año Nuevo para ti también!

Comments are closed.