mail ejemplos junit javamail

junit - ejemplos - javax.mail maven



java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger para el caso de prueba JUnit para correo Java (7)

Consulte http://mvnrepository.com/artifact/javax.mail/mail/ , puede descargar jar o usar la dependencia de maven, según su tipo de proyecto. Eso debería cubrirlo bastante y no obtendrá una excepción NoClassDefFoundError.

Hola, estoy usando java mail API para leer y analizar correos electrónicos. Está funcionando bien con el código de servlet. Ahora estoy tratando de escribir un caso de prueba J Unit para el mismo propósito. Pero en línea "Session session = Session.getDefaultInstance (properties);" Estoy obteniendo una excepción como java.lang.NoClassDefFoundError: com / sun / mail / util / MailLogger

y la traza completa de pila es como

java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger at javax.mail.Session.initLogger(Session.java:227) at javax.mail.Session.<init>(Session.java:212) at javax.mail.Session.getDefaultInstance(Session.java:315) at javax.mail.Session.getDefaultInstance(Session.java:355) at com.vxl.appanalytix.dataload.fromEmail.EmailParser.parseEmailSubject(EmailParser.java:44) at com.vxl.appanalytix.controllers.controllerClasses.GenericEmailServiceClass.readEmailAttachments(GenericEmailServiceClass.java:33) at com.vxl.appanalytix.dataload.GenericEmailTestCase.test(GenericEmailTestCase.java:42) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 35 more

¿Puedo saber dónde estoy yendo mal?



El artefacto javax.mail-api solo sirve para compilar contra. Realmente necesita ejecutar código, por lo que necesita una implementación completa de JavaMail. Utilizar:

<groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.5</version>

El número de versión probablemente sea diferente: https://mvnrepository.com/artifact/com.sun.mail/javax.mail



Sucede también si su código espera Java Mail 1.4 y sus jar son Java Mail 1.3. Me sucedió cuando actualicé Pentaho Kettle

Saludos


Uso las siguientes dependencias maven para que funcione el correo java. El primero incluye la API javax.mail (sin implementación) y el segundo es la implementación SUN de la API javax.mail.

<dependency> <groupId>javax.mail</groupId> <artifactId>javax.mail-api</artifactId> <version>1.5.5</version> </dependency> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.5</version> </dependency>


com.sun.mail.util.MailLogger es parte de JavaMail API. Ya está incluido en el entorno EE (es por eso que puede usarlo en su servidor directo), pero no está incluido en el entorno SE.

Documentos de Oracle :

La API de JavaMail está disponible como un paquete opcional para usar con la plataforma Java SE y también se incluye en la plataforma Java EE.

99% de que ejecuta sus pruebas en entorno SE, lo que significa que tiene que preocuparse por agregarlo manualmente a su classpath al ejecutar las pruebas.

Si usa maven agregue la siguiente dependencia (es posible que desee cambiar la versión):

<dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.0</version> </dependency>