Saya menggunakan Java Mail API untuk membaca dan memilah email. Ini berfungsi baik dengan kode Servlet.
Sekarang saya mencoba untuk menulis test case JUnit untuk tujuan yang sama. Tetapi secara online Session session = Session.getDefaultInstance(properties);
saya mendapatkan pengecualian berikut:
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
Adakah yang bisa memberitahu saya di mana saya salah.
<groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId>
.The
javax.mail-api
artefak hanya baik untuk kompilasi terhadap.Anda sebenarnya perlu menjalankan kode, sehingga Anda membutuhkan implementasi JavaMail API yang lengkap. Gunakan ini:
CATATAN: Nomor versi mungkin akan berbeda. Periksa versi terbaru di sini .
sumber
java.lang.NoClassDefFoundError: com/sun/mail/util/PropUtil
sertaCould not initialize class javax.mail.internet.InternetAddress
kesalahan.Saya menggunakan dependensi pakar berikut untuk membuat surat java berfungsi. Yang pertama termasuk API javax.mail (tanpa implementasi) dan yang kedua adalah implementasi SUN dari API javax.mail.
sumber
Unduh JAR ini dan tambahkan ke perpustakaan Anda: http://java.net/projects/javamail/downloads/download/javax.mail.jar
sumber
Silakan lihat http://mvnrepository.com/artifact/javax.mail/mail/ , Anda dapat mengunduh jar atau menggunakan ketergantungan maven, tergantung pada jenis proyek Anda. Itu seharusnya cukup banyak menutupinya dan Anda tidak akan mendapatkan pengecualian NoClassDefFoundError.
sumber
Sangat menarik. Anda hanya perlu menggunakan javax-mail.jar dari "com.sun" bukan "javax.mail".
dwonload com.sun mail jar
sumber
Ini terjadi juga jika kode Anda mengharapkan Java Mail 1.4 dan toples Anda adalah Java Mail 1.3. Terjadi pada saya ketika meningkatkan Ketel Pentaho
Salam
sumber