mail-1.4.jar 버전을 사용하여 Gmail받은 편지함을 읽었습니다. 리스너를 구성하기 위해 javax.mail-1.6.0.jar로 업그레이드했습니다. 이 업그레이드 후 이메일 리더 메소드가이 오류를 던지기 시작했습니다. 많은 구글과 maven 의존성 및 버전 변경과 관련된 여러 시도 후에도이 문제를 해결할 수 없습니다. 나는 스탠드에서 동일한 코드를 실행하면java.lang.NoSuchMethodError : javax.mail.internet.ParameterList.combineSegments() V
Properties props = new Properties();
props.put("mail.store.protocol", "imaps");
Session session = Session.getInstance(props, null);
Store store = session.getStore();
try {
store.connect("imap.gmail.com", userName, password);
}catch(Exception e){
e.printStackTrace();
logger.debug("IMAP Email Listener connection fail");
}
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message[] msgs = folder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false));
for (int i = 0; i < msgs.length; i++) {
try {
String subject = msgs[i].getSubject();
logger.debug("subject " + i + ":" + subject);
Object content = msgs[i].getContent(); // Here is the exception comes
logger.debug("content" + i + ":" + content.toString());
} catch(Exception e) {
}
}
혼자 자바 클래스 모든 것이 잘 작동 : 아래
내 pom.xml 파일 자바 코드 아래java.lang.NoSuchMethodError: javax.mail.internet.ParameterList.combineSegments()V
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.0</version>
</dependency>
에서 받는다는 의존성이다 . 그러나 Tomcat에 war 파일을 배포 할 때 동일한 코드가 작동하지 않습니다.
스택 트레이스 :
java.lang.NoSuchMethodError: javax.mail.internet.ParameterList.combineSegments()V
com.sun.mail.imap.protocol.BODYSTRUCTURE.parseParameters(BODYSTRUCTURE.java:420)
com.sun.mail.imap.protocol.BODYSTRUCTURE.<init>(BODYSTRUCTURE.java:239)
com.sun.mail.imap.protocol.BODYSTRUCTURE.<init>(BODYSTRUCTURE.java:110)
com.sun.mail.imap.protocol.FetchResponse.parseItem(FetchResponse.java:256)
com.sun.mail.imap.protocol.FetchResponse.parse(FetchResponse.java:212)
com.sun.mail.imap.protocol.FetchResponse.<init>(FetchResponse.java:96)
com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:409)
com.sun.mail.iap.Protocol.command(Protocol.java:355)
com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:2151)
com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:2143)
com.sun.mail.imap.protocol.IMAPProtocol.fetchBodyStructure(IMAPProtocol.java:1717)
com.sun.mail.imap.IMAPMessage.loadBODYSTRUCTURE(IMAPMessage.java:1552)
com.sun.mail.imap.IMAPMessage.getDataHandler(IMAPMessage.java:808)
javax.mail.internet.MimeMessage.getContent(MimeMessage.java:927)
아마 다음 중 하나에 의해 발생
전체 예외 스택 추적을 게시하십시오. JavaMail 1.5에'ParameterList.combineSegments()'가 추가되었고 이전에 JavaMail 1.4를 사용했기 때문에 모든 의존성을 업데이트했는지 확인하십시오. 이 오류는 종속성 트리의 항목이 JavaMail 1.4로 다운 그레이드되었음을 나타낼 수 있습니다. –
stacktrace가 업데이트되었습니다. @MarkRotteveel. 예, pom.xml에서 이전 종속 항목을 제거했습니다. 또한 이전 버전이 war 파일의 lib 폴더에 포함되지 않았 음을 확인했습니다. – manurajhada
[this] (https://stackoverflow.com/questions/31984127/javamail-nosuchmethoderror-javax-mail-internet-parameterlist-combinesegments)가 도움이됩니까? – pirho