2012-12-05 2 views
0

맞춤 Android 기기에서 IMAP 클라이언트를 개발 중입니다. 그래서 나는 자바 메일 라이브러리를 사용하기로 결정했다. 거대한 INBOX 폴더 (약 120k 메일)의 경우 메모리 문제 때문에 1.4.1 버전의 Java Mail에서 1.4.5로 업데이트해야했습니다.java mail 1.4.5 on android

공식 홈 페이지에서 2 개의 jar (mail.jar 및 activation.jar)를 다운로드 했으므로 릴리스 후보 1.4.6과 함께 시도했지만 제대로 작동하지 않습니다.

내가 전체 응용 프로그램을 빌드하면, 모든 것이 괜찮습니다,하지만 난 실행할 때, 여기 온다 내용은 다음과 같습니다

2-05 17:31:21.020 19862 19912 I dalvikvm: Failed resolving Ljavax/activation/DataHandler; interface 571 'Ljava/awt/datatransfer/Transferable;' 
12-05 17:31:21.030 19862 19912 W dalvikvm: Link of class 'Ljavax/activation/DataHandler;' failed 
12-05 17:31:21.030 19862 19912 W dalvikvm: VFY: unable to find class referenced in signature (Ljavax/activation/DataHandler;) 
12-05 17:31:21.030 19862 19912 I dalvikvm: Failed resolving Ljavax/activation/DataHandler; interface 571 'Ljava/awt/datatransfer/Transferable;' 
12-05 17:31:21.030 19862 19912 W dalvikvm: Link of class 'Ljavax/activation/DataHandler;' failed 
12-05 17:31:21.030 19862 19912 E dalvikvm: Could not find method javax.activation.DataHandler.getName, referenced from method javax.mail.internet.MimeUtility.getEncoding 
12-05 17:31:21.030 19862 19912 W dalvikvm: VFY: unable to resolve virtual method 4632: Ljavax/activation/DataHandler;.getName()Ljava/lang/String; 
12-05 17:31:21.040 19862 19912 W dalvikvm: VFY: rejecting opcode 0x6e at 0x0004 
12-05 17:31:21.040 19862 19912 W dalvikvm: VFY: rejected Ljavax/mail/internet/MimeUtility;.getEncoding (Ljavax/activation/DataHandler;)Ljava/lang/String; 
12-05 17:31:21.040 19862 19912 W dalvikvm: Verifier rejected class Ljavax/mail/internet/MimeUtility; 
12-05 17:31:21.050 19862 19912 D EMAIL : Releasing mail download wake lock 
12-05 17:31:21.050 19862 19912 W dalvikvm: threadid=17: thread exiting with uncaught exception (group=0x4001aa30) 
12-05 17:31:21.060 19862 19912 E AndroidRuntime: Uncaught handler: thread pool-1-thread-1 exiting due to uncaught exception 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: java.lang.VerifyError: javax.mail.internet.MimeUtility 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:130) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at com.sun.mail.imap.IMAPStore.newIMAPProtocol(IMAPStore.java:685) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:636) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at javax.mail.Service.connect(Service.java:295) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at javax.mail.Service.connect(Service.java:176) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at it.kynetics.imwatch.email.imap.EmailAuthenticationImpl.login(EmailAuthenticationImpl.java:36) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at it.kynetics.imwatch.email.imap.EmailConnection.execute(EmailConnection.java:21) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at it.kynetics.imwatch.email.ImCloudEmailService$GetEmailTask.run(ImCloudEmailService.java:148) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:648) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:673) 
12-05 17:31:21.080 19862 19912 E AndroidRuntime: at java.lang.Thread.run(Thread.java:1060) 
12-05 17:31:21.120 1830 1830 I Process : Sending signal. PID: 19862 SIG: 3 

내가 항아리에 DataHandler에와 getName 방법을 확인했는데, 다 괜찮습니다.

동일한 문제가있는 사람이 있습니까?

감사합니다.

답변

1

모든 자바 라이브러리가 Android에서 작동하는 것은 아닙니다. javamail port for android 만 사용할 수 있습니다. Javamail의 최신 버전은 여전히 ​​Android 용으로 이식되지 않았습니다.

0

해결책을 찾았습니다! mail.jar과 소스 코드를 수정해야했습니다. 그것은 "수입 포장"문제입니다. Android 포팅에서 mail.jar 클래스 중 일부는 패키지 이름이 myjava.awt 인 additionnal.jar에서 다른 클래스를 가져옵니다. exc. java mail 1.4.5에서 패키지 이름은 java.awt exc, withouth는 "my"접두사입니다. 이를 수정하면 모두 작동합니다.

모두에게 감사드립니다!

+0

Android에 이식 된 javamail 1.5.3이 있습니까? 이식하는 방법을 설명해 주시겠습니까? –