No mapping found for dependency [type=java.lang.String, name='struts.devMode']
@康杰 你好,想跟你请教个问题:
No mapping found for dependency [type=java.lang.String, name='struts.devMode'] 这种问题你解决过吗?
我在 struts 版本升级 2.1.8 升级到 2.3.16.3 是出错,一直解决不了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
虽然时间过去2年了.我还是补个答案吧,
出现这个问题,是因为使用 了Codebehind Plugin的包(你可以去查找下你的jar包,有这两个关键字的)。貌似早期这个的使用需要去web.xml文件里面,在struts的过滤器下配置init-param参数,参数名为actionPackages,参数的值是你的使用了annotation标签的java文件,这样他才会解析annotation。出现上面那个报错的原因,就是因为Codebehind Plugin他需要上面配置的参数去查找配置annotation的类,而没有配置的情况下,他找不到,于是报那个问题。
在2.1之后,使用了Convention Plugin 替代了Codebehind Plugin ,所以已经不需要配置init-param参数,所以你可以直接去掉Codebehind Plugin 的包,只要遵守Convention Plugin 要求的规则,他就会自动去解析对应的使用了annotation的文件,大致规则就是:
1. 扫描其位于包( “struts, struts2, action 或 actions“)的命名注解的类.
2. 接着,扫描相匹配下列任一条件的文件:
实例了 com.opensymphony.xwork2.Action 接口。
扩展了 com.opensymphony.xwork2.ActionSupport 类
文件名用动作(例如:UserAction,LoginAction)结束
(参考内容:http://struts.apache.org/docs/convention-plugin.html#ConventionPlugin-Introduction ,在介绍的时候就写明了)
我不确认你是不是跟我一样的问题,我是使用annotation的时候发现的。因为我只使用了No mapping found for dependency [type=java.lang.String, 这几个关键字来查询。不过看这句的意思是没有发现依赖的配置信息,我想多半是在加载的时候找不到action的配置信息,所以把我的原因写上,有后来者的话可以参考下。
不是struts2的包,是其它的包与struts2有冲突
struts2-convention-plugin-2.3.16.3.jar
struts2-core-2.3.16.3.jar
struts2-json-plugin-2.3.16.3.jar
struts2-spring-plugin-2.3.16.3.jar
xwork-core-2.3.16.3.jar
版本都是一致的。
struts2-convention-plugin-2.3.16.3.jar struts2-core-2.3.16.3.jar struts2-json-plugin-2.3.16.3.jar struts2-spring-plugin-2.3.16.3.jar xwork-core-2.3.16.3.jar 版本都是一致的。
这个问题貌似是jar包冲突所导致,我之前遇见过相同的问题。你导入了哪些jar包,贴图出来看看