Ошибка, вызванная издевательским методом с помощью SendMail [duplicate]

22
задан Kayser 27 August 2012 в 14:24
поделиться

4 ответа

Это не работает, потому что специально сконструированы классы из javax/javaee-api/provided зависимостей. Они не используются во время выполнения, поскольку отсутствует реализация методов.

Простое добавление классов из javax.mail/mail/1.4.5 зависимости от пути к классам не помогает, потому что классы из javax/javaee-api/provided уже существуют. Только javax.mail/mail/1.4.5 dependecy решает вашу проблему, но, скорее всего, вам также нужны другие классы из javax/javaee-api/provided.

Что вы можете сделать, так это избавиться от зависимости javax/javaee-api/provided и получить эти классы, например, из зависимостей, предоставляемых целевым сервером приложений. Вы можете использовать, например, следующее:

   <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>1.0.0.Final</version>
        <type>pom</type>
        <scope>provided</scope>
     </dependency>

Поскольку предоставлена ​​возможность, она не влияет на создаваемый артефакт. Вот почему вы можете использовать его и с другими серверами приложений, чем с JBoss. Это тот же API, что и в вашей исходной зависимости, но он содержит классы normal .

34
ответ дан Oliver Hernandez 19 August 2018 в 13:10
поделиться
  • 1
    Я использую Websphere. Как я могу получить зависимость? Скопировать в classpath ??? – Kayser 27 August 2012 в 14:42
  • 2
    Я добавил дополнительные инструкции для ответа. – Mikko Maunu 27 August 2012 в 14:52
  • 3
    Спасибо, это работает... – Kayser 27 August 2012 в 15:22
  • 4
    Я всегда добавляю javaee-api зависимость LAST в pom.xml, с банками реализации перед ним, и это исправляет – Martin Charlesworth 4 July 2014 в 10:36

в моем случае, используйте только библиотеку:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4</version>
</dependency>

Без проблем с JDK 6 и Tomcat

4
ответ дан Manu Navarro 19 August 2018 в 13:10
поделиться

Странно, но для меня работает следующий порядок:

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4</version>
    </dependency>

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>

Обратное не работает.

4
ответ дан prayagupd 19 August 2018 в 13:10
поделиться
  • 1
    Это на самом деле работает. @prayag upd Можете ли вы разместить несколько подробностей о том, как это работает. – udaybhaskar 1 February 2017 в 08:45

Если вы добавите их в свой pom в следующем порядке: javax.mail javaee-web-api довольно логично, что он будет работать, потому что среда выполнения сначала найдет необходимый класс (с правильной реализацией) из javax.mail, игнорируя любой подобный класс (без реализации) из javaee-web-api.

0
ответ дан Sorin-Alexandru Cristescu 19 August 2018 в 13:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: