开发过程中,使用 run-app 命令启动工程时,偶尔会出现 BeanCreationException: Error creating bean with name 之类的异常消息,然后自动退出。
产生这种情况的原因比较多,一般需要根据详细的日志进行分析(可惜这个异常日志查起来非常不友好),下面列举几种可能情况:
- 日志里涉及到的都是跟我当前开发的工程没有任何关系的东西,貌似是grails或者插件里的:
可以尝试先 clean 一下,再重新 run-app
如果是和插件有关系,可以尝试使用 g update-cache 更新一下grails的缓存 - 日志里有 java.lang.NoSuchMethodError 之类的异常消息,得找到对应的类,然后进行修改
如果说这个类跟也不是工程里写的,而是第三方插件的,可以同上处理 - 日志里如果有工程相关的类的消息,可以查查看是不是说没有某个属性、没有实现某个interface的接口等导致的
- 日志里如果有工程相关的、正在开发过程中的service类的信息,可以查查看是不是有两个service类相互引用了,
如 FooService 里 def barService,而 BarService 里 def fooService。
此时最好取消相互引用,实在必要的话,可以在其中一个service中,采用 BeanUtils.getBean("fooService") 的方法来获得另外一个service的实例