java.lang.NoSuchMethodError при отправке почты с использованием Apache James 3
Я только что скачал и настроил последнюю бета-версию Apache James 3 для Windows, и до сих пор не смог отправить простое сообщение. Похоже, что есть проблема со сборкой. Ошибка -
ERROR 22:45:01,666 | james.mailspooler | Exception processing mail while spooling Unable to process mail Mail1442234701295-757cd62b-eeed-4671-828c-2a7c715acfaa (org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[Message: org.apache.james.core.MailImpl@4262d5d7])
javax.mail.MessagingException: Unable to process mail Mail1442234701295-757cd62b-eeed-4671-828c-2a7c715acfaa (org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[Message: org.apache.james.core.MailImpl@4262d5d7])
.
.
Caused by: javax.mail.MessagingException: Unable to process mail Mail1442234701295-757cd62b-eeed-4671-828c-2a7c715acfaa (org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[Message: org.apache.james.core.MailImpl@4262d5d7])
.
.
Caused by: org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[Message: org.apache.james.core.MailImpl@4262d5d7]
.
.
Caused by: java.lang.NoSuchMethodError: org.apache.james.mime4j.stream.MimeConfig: method <init>()V not found
Соответствующий класс в JAR показывает предположительно отсутствующий конструктор, поэтому я в полной растерянности. Кто-нибудь может направить меня в правильном направлении, пожалуйста?
Заранее спасибо!
Редактировать: фрагмент декомпилированного кода из класса MimeConfig показывает конструктор
public final class MimeConfig {
/* member class not found */
class Builder {}
.
.
MimeConfig(boolean strictParsing, int maxLineLen, int maxHeaderCount, int maxHeaderLen, long maxContentLen, boolean countLineNumbers,
String headlessParsing, boolean malformedHeaderStartsBody) {
/* 53*/ this.strictParsing = strictParsing;
/* 54*/ this.countLineNumbers = countLineNumbers;
/* 55*/ this.malformedHeaderStartsBody = malformedHeaderStartsBody;
/* 56*/ this.maxLineLen = maxLineLen;
/* 57*/ this.maxHeaderCount = maxHeaderCount;
/* 58*/ this.maxHeaderLen = maxHeaderLen;
/* 59*/ this.maxContentLen = maxContentLen;
/* 60*/ this.headlessParsing = headlessParsing;
}
2 ответа
Решение - использовать: apache-mime4j-core-0.7.2.jar и apache-mime4j-dom-0.7.2.jar
загрузите две банки и поместите их в: james-server-app-3.0.0-beta5-SNAPSHOT\lib.
Вы можете скачать james-server-app-3.0.0-beta5 по адресу: https://repository.apache.org/content/repositories/snapshots/org/apache/james/james-server-app/3.0.0-beta5-SNAPSHOT/.
Я получил ту же ошибку и искал ответ. Ошибка в том, что MimeConfig не имеет конструктора по умолчанию. Я мог бы успешно доставить почту локально, выполнив следующие действия.
- Загруженные apache-mime4j-core-0.8.0-20150617.024907-738-sources
- Создан открытый конструктор по умолчанию для MimeConfig
- Инициализированы все переменные со значениями, показанными в конструкторе статического класса Builder
- Добавлены сеттеры для всех переменных (потому что я получал NoSuchMethodError для setMaxLineLen)
- Создал jar с именем apache-mime4j-0.8.0-fix.jar и поместил его в папку lib
- Я использую run.sh, поэтому заменил имя jar ядра mime4j на указанное выше.
Я уверен, что есть некоторое несоответствие между спулером и mime4j. Я думаю, что вызывающий код должен использовать Builder вместо прямой попытки создания экземпляра MimeConfig.
Попробуйте это и дайте мне знать, если это работает. Это сработало для меня. Я не уверен, что это постоянное исправление, но я могу продолжить изучение возможностей V3, пока мы не получим окончательное решение.