Grails 创建名为';邮件发送者';圣杯

Grails 创建名为';邮件发送者';圣杯,grails,jakarta-mail,Grails,Jakarta Mail,grails无法创建bean 这是我的config.groovy for mail grails { mail { grails.mail.jndiName = "java:comp/env/mail/mailSession" } } 这是针对context.xml上的mail/mailSession jndi <Resource name="mail/mailSession" auth="Container"

grails无法创建bean

这是我的config.groovy for mail

grails {
    mail {
        grails.mail.jndiName = "java:comp/env/mail/mailSession"
    }
}
这是针对context.xml上的mail/mailSession jndi

<Resource name="mail/mailSession"
                  auth="Container"
                type="javax.mail.Session"
                mail.smtp.host="smtp.gmail.com"
                mail.smtp.port="465"
                mail.smtp.auth="true"
                mail.smtp.user="abc_yes@gmail.com"
                password="abc123"
                mail.smtp.starttls.enable="true"
                mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"
    />
我如何解决这个问题

我已经将mail.jar、mysq connector和activation.jar移动到lib..像这样

这是新的错误

Configuring event listener class 'org.apache.catalina.deploy.ApplicationListener@50faece'
Oct 20, 2015 4:47:44 PM org.apache.catalina.core.StandardContext listenerStart
FINE: Sending application start events
log4j:WARN No appenders could be found for logger (org.codehaus.groovy.grails.commons.cfg.ConfigurationHelper).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Oct 20, 2015 4:47:47 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
2015-10-20 16:47:49,595 [localhost-startStop-1] ERROR context.ContextLoader  - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'grailsApplication' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.ExceptionInInitializerError
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ExceptionInInitializerError
        at java.lang.Class.forName(Class.java:274)
        ... 5 more
Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '{}' with class 'groovy.util.ConfigObject' to class 'int'
        at CorporateUserService.<clinit>(CorporateUserService.groovy:31)
        ... 6 more
Oct 20, 2015 4:47:49 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'grailsApplication' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.ExceptionInInitializerError
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ExceptionInInitializerError
        at java.lang.Class.forName(Class.java:274)
        ... 5 more
Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '{}' with class 'groovy.util.ConfigObject' to class 'int'
        at CorporateUserService.<clinit>(CorporateUserService.groovy:31)
        ... 6 more

Oct 20, 2015 4:47:49 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log file
Oct 20, 2015 4:47:49 PM org.apache.catalina.session.StandardManager doLoad
FINE: Start: Loading persisted sessions
Oct 20, 2015 4:47:49 PM org.apache.catalina.session.StandardManager doLoad
FINE: Loading persisted sessions from SESSIONS.ser
Oct 20, 2015 4:47:49 PM org.apache.catalina.session.StandardManager doLoad
FINE: No persisted data file found
Oct 20, 2015 4:47:49 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [] startup failed due to previous errors
Oct 20, 2015 4:47:49 PM org.apache.catalina.core.StandardContext filterStop
FINE: Stopping filters
Oct 20, 2015 4:47:49 PM org.apache.catalina.session.StandardManager stopInternal
FINE: Stopping
Oct 20, 2015 4:47:49 PM org.apache.catalina.session.StandardManager doUnload
FINE: Unloading persisted sessions
Oct 20, 2015 4:47:49 PM org.apache.catalina.session.StandardManager doUnload
FINE: No persisted sessions to unload
Oct 20, 2015 4:47:49 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Oct 20, 2015 4:47:49 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive /root/tomcat7/webapps/ROOT.war has finished in 29,869 ms
Oct 20, 2015 4:47:49 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-80"]
Oct 20, 2015 4:47:49 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Oct 20, 2015 4:47:49 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 30090 ms
配置事件侦听器类“org.apache.catalina.deploy”。ApplicationListener@50faece'
2015年10月20日下午4:47:44 org.apache.catalina.core.StandardContext listenerStart
精细:发送应用程序启动事件
log4j:WARN找不到记录器(org.codehaus.groovy.grails.commons.cfg.ConfigurationHelper)的附加程序。
log4j:警告请正确初始化log4j系统。
log4j:请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig 更多信息。
2015年10月20日下午4:47:47 org.apache.catalina.core.ApplicationContext日志
信息:正在初始化Spring根WebApplicationContext
2015-10-20 16:47:49595[localhost-startStop-1]错误context.ContextLoader-上下文初始化失败
org.springframework.beans.factory.BeanCreationException:创建名为“grailsApplication”的bean时出错,该bean在ServletContext资源[/WEB-INF/applicationContext.xml]中定义:调用init方法失败;嵌套异常为java.lang.ExceptionInInitializeError
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:745)
原因:java.lang.ExceptionInInitializeError
位于java.lang.Class.forName(Class.java:274)
... 还有5个
原因:org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法将类为“groovy.util.ConfigObject”的对象“{}”强制转换为类“int”
在CorporateService。(CorporateService.groovy:31)
... 还有6个
2015年10月20日下午4:47:49 org.apache.catalina.core.StandardContext listenerStart
严重:将上下文初始化事件发送到类org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener的侦听器实例时发生异常
org.springframework.beans.factory.BeanCreationException:创建名为“grailsApplication”的bean时出错,该bean在ServletContext资源[/WEB-INF/applicationContext.xml]中定义:调用init方法失败;嵌套异常为java.lang.ExceptionInInitializeError
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:745)
原因:java.lang.ExceptionInInitializeError
位于java.lang.Class.forName(Class.java:274)
... 还有5个
原因:org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法将类为“groovy.util.ConfigObject”的对象“{}”强制转换为类“int”
在CorporateService。(CorporateService.groovy:31)
... 还有6个
2015年10月20日下午4:47:49 org.apache.catalina.core.StandardContext startInternal
严重:一个或多个侦听器无法启动。完整的详细信息将在相应的容器日志文件中找到
2015年10月20日下午4:47:49 org.apache.catalina.session.StandardManager doLoad
精细:开始:加载持久化会话
2015年10月20日下午4:47:49 org.apache.catalina.session.StandardManager doLoad
精细:从sessions.ser加载持久化会话
2015年10月20日下午4:47:49 org.apache.catalina.session.StandardManager doLoad
精细:未找到持久化数据文件
2015年10月20日下午4:47:49 org.apache.catalina.core.StandardContext startInternal
严重:由于以前的错误,上下文[]启动失败
2015年10月20日下午4:47:49 org.apache.catalina.core.StandardContext filterStop
罚款:停止过滤器
2015年10月20日下午4:47:49 org.apache.catalina.session.StandardManager
罚款:停止
2015年10月20日下午4:47:49 org.apache.catalina.session.StandardManager doUnload
罚款:卸载持久会话
2015年10月20日下午4:47:49 org.apache.catalina.session.StandardManager doUnload
很好:没有要卸载的持久会话
2015年10月20日下午4:47:49 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
严重:web应用程序[]注册了JDBC驱动程序[com.mysql.JDBC.driver],但在web应用程序停止时未能注销它。为了防止内存泄漏,JDBC驱动程序已被强制注销。
2015年10月20日下午4:47:49 org.apache.catalina.startup.HostConfig deployWAR
信息:web应用程序存档/root/tomcat7/webapps/root.war的部署在29869毫秒内完成
2015年10月20日下午4:47:49 org.apache.coyote.AbstractProtocol开始
信息:正在启动ProtocolHandler[“http-bio-80”]
2015年10月20日下午4:47:49 org.apache.coyote.AbstractProtocol开始
信息:正在启动ProtocolHandler[“ajp-bio-8009”]
2015年10月20日下午4:47:49 org.apache.catalina.startup.catalina start
信息:服务器在30090毫秒内启动

错误非常清楚:
java.lang.ClassNotFoundException:javax.mail.Authenticator
。由于缺少
javax.mail.Authenticator
,您必须添加
activation.jar
,它是包含此类的库,您可以从
WEB-INF/lib
下载并添加到该库中

如果您使用gradle构建项目,它将为您解决此依赖关系,只需添加
javax.mail
,因为
activation
是它的依赖关系。在gradle simple中,使用此选项可以解决所需的依赖关系:

dependencies {
    compile group: 'javax.mail', name: 'mail', version: '1.4.1'
}
另外,针对
javax.mail
1.4.1
的较新版本似乎没有这种依赖性,因此您可以简单地使用较新的
javax.mail 1.4.1
javax.activation 1.1
来代替

dependencies {
    compile group: 'javax.mail', name: 'mail', version: '1.4.1'
}