gpt4 book ai didi

Grails log4j SMTPAppender NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-04 20:38:41 25 4
gpt4 key购买 nike

如何在新的 Grails 2.4.5 项目中配置 SMTPAppender?在开发环境中运行时收到 NoClassDefFoundError:

| Error log4j:ERROR Error initializing log4j: javax/mail/Message

| Error java.lang.NoClassDefFoundError: javax/mail/Message


Gist: Detailed stacktrace
我已经为 javax.mail 配置了一个依赖项,并配置了 log4j,如下所示:
dependencies {
provided 'javax.mail:mail:1.4.7'
}

log4j = {
appenders {
appender new org.apache.log4j.net.SMTPAppender(
name: 'smtp',
layout: pattern(conversionPattern: '%d{MM-dd-yyyy HH:mm:ss.SSS} [%t] %c %M %x%n%p: %m%n')
to: 'example@example.com',
from: 'example@example.com',
subject: 'Grails Message',
SMTPHost: '127.0.0.1')
)
}
}
GitHub: Example Project

最佳答案

我知道这篇文章很旧,但我一直在努力解决这个问题,直到我找到了一个至少对我有用的解决方案(不是使用 SMTPAppender 而是使用 Sentry - 目的相同)。

我在您收到的错误中找到的解释

Error log4j:ERROR Error initializing log4j: javax/mail/Message

Error java.lang.NoClassDefFoundError: javax/mail/Message



来自这段代码:
dependencies {
provided 'javax.mail:mail:1.4.7'
}

问题是,当你编译东西时,当你尝试做时 grails run-app您收到此错误。

我发现的解释是 log4j 在 maven 依赖项解决之前初始化。

我写了一篇关于我如何使用 Sentry 作为 appender 的评论。
https://github.com/getsentry/raven-java/issues/184#issuecomment-259432057

基本上,我没有添加 maven 依赖项,而是下载了 java 文件,并将其添加到 src/java 中的 grails 项目中

因此,对于 Sentry 或示例,我将 SentryAppender.java 添加到 my.package.sentry 中,然后在 log4j 中添加:
  appenders {
environments {
// This block is set up to use the stock raven SentryAppender in
// production. Sentry Appender runs into all kinds of
// class loading weirdness when used in a forked grails environment
production {
appender new my.package.sentry.SentryAppender(
name: 'sentry',
dsn: 'REDACTED',
threshold: org.apache.log4j.Level.WARN
)
}

// Uncomment this block if you need to test sentry
// in a dev environment
development {
appender new my.package.sentry.SentryAppender(
name: 'sentry',
dsn: 'REDACTED',
threshold: org.apache.log4j.Level.WARN
)
}
}

}

root {
warn 'stdout', 'sentry'
error 'stdout', 'sentry'
additivity = false
}

这样,它不依赖于外部依赖。

我想您可以执行类似于邮件依赖项的操作,并将 java 文件添加到 src 文件夹中。

我希望它有帮助!

关于Grails log4j SMTPAppender NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30549099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com