dependency management - Grails log4j SMTPAppender NoClassDefFoundError -
how configure smtpappender in new grails 2.4.5 project? receive noclassdeffounderror when running in development environment:
| error log4j:error error initializing log4j: javax/mail/message
| error java.lang.noclassdeffounderror: javax/mail/message
i have configured dependency javax.mail , configured log4j follows:
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') ) } }
i know post old, struggled same till found solution @ least working me (not smtpappender sentry - same purpose).
the explanation found errors receiving
error log4j:error error initializing log4j: javax/mail/message
error java.lang.noclassdeffounderror: javax/mail/message
come piece of code:
dependencies { provided 'javax.mail:mail:1.4.7' } the thing when compile things work, when try grails run-app receive error.
the explanation found log4j initializes before maven dependency resolved.
i wrote comment of how i've used sentry appender. https://github.com/getsentry/raven-java/issues/184#issuecomment-259432057
basically, instead of adding maven dependency i've downloaded java file, , added grails project in src/java
so sentry por example added sentryappender.java my.package.sentry in log4j added:
appenders { environments { // block set use stock raven sentryappender in // production. sentry appender runs kinds of // class loading weirdness when used in forked grails environment production { appender new my.package.sentry.sentryappender( name: 'sentry', dsn: 'redacted', threshold: org.apache.log4j.level.warn ) } // uncomment block if need test sentry // in 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 } in way, not depend on external dependency.
i guess similar mail dependency , add java files src folder.
i hope helps!
Comments
Post a Comment