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?
Descargue este JAR y agréguelo a sus bibliotecas: http://java.net/projects/javamail/downloads/download/javax.mail.jar
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
Realmente es interesante. Solo necesita usar javax-mail.jar de "com.sun" no "javax.mail".
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.
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>