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 не имеет конструктора по умолчанию. Я мог бы успешно доставить почту локально, выполнив следующие действия.

  1. Загруженные apache-mime4j-core-0.8.0-20150617.024907-738-sources
  2. Создан открытый конструктор по умолчанию для MimeConfig
  3. Инициализированы все переменные со значениями, показанными в конструкторе статического класса Builder
  4. Добавлены сеттеры для всех переменных (потому что я получал NoSuchMethodError для setMaxLineLen)
  5. Создал jar с именем apache-mime4j-0.8.0-fix.jar и поместил его в папку lib
  6. Я использую run.sh, поэтому заменил имя jar ядра mime4j на указанное выше.

Я уверен, что есть некоторое несоответствие между спулером и mime4j. Я думаю, что вызывающий код должен использовать Builder вместо прямой попытки создания экземпляра MimeConfig.

Попробуйте это и дайте мне знать, если это работает. Это сработало для меня. Я не уверен, что это постоянное исправление, но я могу продолжить изучение возможностей V3, пока мы не получим окончательное решение.

Другие вопросы по тегам