spring3 mvc使用注解方式时,不能扫描jar包里面的类

aiwuhui 2014-10-13 03:32:39
如题,在线回复,求大神。晚上有很多人都遇到了,说是用eclipse导出时选择Add directory entries选项,如这个贴:http://yizhilong28.iteye.com/blog/1146830,这个帖子下面说用这个方法:
在maven下,打包时需要指定添加
Java代码 收藏代码
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>

我也试过了,不好用。还是扫描不到,在线等啊大神们
...全文
11932 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
老猫烧须 2015-06-29
  • 打赏
  • 举报
回复
引用 28 楼 liubingjunws 的回复:
[quote=引用 27 楼 fangmingshijie 的回复:] <context:annotation-config/>去掉 <context:component-scan base-package="*"/>改为<context:component-scan base-package="com.*"/>
非常感谢,是这句话问题:<context:component-scan base-package="*"/>改为<context:component-scan base-package="com.*"/> 结贴。[/quote] 还是没能成功,我和楼主遇到同样的问题。
aiwuhui 2014-10-14
  • 打赏
  • 举报
回复
总结:
问题:项目是springMVC+maven 架构。其中某子项目是jar,在项目里运行没问题,打包成war后,springMVC扫描不到jar中的注解 类。
解决过程,从网山查资料,各解决方法如下
1、就是在用eclipse export jar的时候,勾选add directory entries
我用的是myeclipse,而且不能每次install后 都这么导出,一是环境不同,二是麻烦;
2、使用maven版本:3.0.4, 3.0.5 ,3.2.0, 3.2.1 打包后,jar tf 查看install后的jar,发现带有路径和类信息。3.0.4以下的版本未进行 测试
3、 配置deployment assembly
4、jdk 什么的版本确保一致
其他的比较杂乱了。郁闷2天的问题,至此结束,再次谢谢版主fangmingshijie和各位大神。同时再问下版主,为什么写*扫描不到? 看了下书,没说明白..
  • 打赏
  • 举报
回复
所以问你mainfest.mf的信息,如果这里都没有包信息,那下面的话就不说了。
aiwuhui 2014-10-14
  • 打赏
  • 举报
回复
引用 27 楼 fangmingshijie 的回复:
<context:annotation-config/>去掉 <context:component-scan base-package="*"/>改为<context:component-scan base-package="com.*"/>
非常感谢,是这句话问题:<context:component-scan base-package="*"/>改为<context:component-scan base-package="com.*"/> 结贴。
  • 打赏
  • 举报
回复
<context:annotation-config/>去掉 <context:component-scan base-package="*"/>改为<context:component-scan base-package="com.*"/>
aiwuhui 2014-10-13
  • 打赏
  • 举报
回复
引用 19 楼 fangmingshijie 的回复:
jar的mainfest.mf里的信息是什么样的?是否包含了路径和class文件?

明白你意思了。下面是mainfest.mf的内容,如图所示,包含了路径和类
aiwuhui 2014-10-13
  • 打赏
  • 举报
回复
还有大神在嘛
qq_21952457 2014-10-13
  • 打赏
  • 举报
回复
真的假的啊。我试试
aiwuhui 2014-10-13
  • 打赏
  • 举报
回复
昨晚郁闷了一晚上,今晚继续搞
aiwuhui 2014-10-13
  • 打赏
  • 举报
回复
Manifest-Version: 1.0 Built-By: Administrator Build-Jdk: 1.7.0_09 Created-By: Apache Maven 3.2.1 Archiver-Version: Plexus Archiver 这个jar包里的内容
aiwuhui 2014-10-13
  • 打赏
  • 举报
回复
引用 19 楼 fangmingshijie 的回复:
jar的mainfest.mf里的信息是什么样的?是否包含了路径和class文件?
版主大大,说实话,我没看懂你的意思
tony4geek 2014-10-13
  • 打赏
  • 举报
回复
感觉路径环境的问题。
  • 打赏
  • 举报
回复
jar的mainfest.mf里的信息是什么样的?是否包含了路径和class文件?
木子0204 2014-10-13
  • 打赏
  • 举报
回复
是不是你的maven下面的jdk和开发环境下来的jdk不一致啊
aiwuhui 2014-10-13
  • 打赏
  • 举报
回复
还是谢谢你了。whos2002110 我还不知道怎么单独给你分
whos2002110 2014-10-13
  • 打赏
  • 举报
回复
引用 15 楼 liubingjunws 的回复:
[quote=引用 14 楼 whos2002110 的回复:] [quote=引用 13 楼 liubingjunws 的回复:] [quote=引用 5 楼 whos2002110 的回复:] 你是怎么测试的? 如果是web环境中,先去tomcat中项目的lib下面确认这个jar是否已经存在。 如果存在这个jar, 那看看你spring mvc的配置是怎样的, 你具体是要扫描哪些注解类? 我在使用spring过程中, 很多带注解的类也都是在依赖jar中, 只要路径配置正确,不存在扫描不到的情况。
项目A是web项目,项目b是jar,项目A引用了项目b,在myeclipse中 运行项目A,没问题。 现在将项目A 打包成war,将war放在tomcat中,启动tomcat,报错。jar中所有的service都没扫描到。[/quote] 首先A,b两个项目是否同为一个项目的不同模块, 我估计你的不是, 那么在ide里面你如果修改了b中的代码,比如加了注解,加了类,直接启动是能即使生效的。 但是打包的时候,如果不是具有相同的父项目,则新代码需要重新打包安装的本地maven中, 也就是你要先把b项目install到本地, 然后再打包A,这是的war才具有最新的代码。 不晓得你明白我的意思没, 你尝试用反编译工具看下你当前war下面的jar是否是最新的代码[/quote] 我明白你的意思,打包后的war中包含最新的代码,我两个项目拥有同一个父项目的。 [/quote] 好吧, 这样你在eclipse里面能正确运行,那配置是没问题的了, 我想不到有什么其它原因了, 要不你换个tomcat试下?
aiwuhui 2014-10-13
  • 打赏
  • 举报
回复
引用 14 楼 whos2002110 的回复:
[quote=引用 13 楼 liubingjunws 的回复:] [quote=引用 5 楼 whos2002110 的回复:] 你是怎么测试的? 如果是web环境中,先去tomcat中项目的lib下面确认这个jar是否已经存在。 如果存在这个jar, 那看看你spring mvc的配置是怎样的, 你具体是要扫描哪些注解类? 我在使用spring过程中, 很多带注解的类也都是在依赖jar中, 只要路径配置正确,不存在扫描不到的情况。
项目A是web项目,项目b是jar,项目A引用了项目b,在myeclipse中 运行项目A,没问题。 现在将项目A 打包成war,将war放在tomcat中,启动tomcat,报错。jar中所有的service都没扫描到。[/quote] 首先A,b两个项目是否同为一个项目的不同模块, 我估计你的不是, 那么在ide里面你如果修改了b中的代码,比如加了注解,加了类,直接启动是能即使生效的。 但是打包的时候,如果不是具有相同的父项目,则新代码需要重新打包安装的本地maven中, 也就是你要先把b项目install到本地, 然后再打包A,这是的war才具有最新的代码。 不晓得你明白我的意思没, 你尝试用反编译工具看下你当前war下面的jar是否是最新的代码[/quote] 我明白你的意思,打包后的war中包含最新的代码,我两个项目拥有同一个父项目的。
whos2002110 2014-10-13
  • 打赏
  • 举报
回复
引用 13 楼 liubingjunws 的回复:
[quote=引用 5 楼 whos2002110 的回复:] 你是怎么测试的? 如果是web环境中,先去tomcat中项目的lib下面确认这个jar是否已经存在。 如果存在这个jar, 那看看你spring mvc的配置是怎样的, 你具体是要扫描哪些注解类? 我在使用spring过程中, 很多带注解的类也都是在依赖jar中, 只要路径配置正确,不存在扫描不到的情况。
项目A是web项目,项目b是jar,项目A引用了项目b,在myeclipse中 运行项目A,没问题。 现在将项目A 打包成war,将war放在tomcat中,启动tomcat,报错。jar中所有的service都没扫描到。[/quote] 首先A,b两个项目是否同为一个项目的不同模块, 我估计你的不是, 那么在ide里面你如果修改了b中的代码,比如加了注解,加了类,直接启动是能即使生效的。 但是打包的时候,如果不是具有相同的父项目,则新代码需要重新打包安装的本地maven中, 也就是你要先把b项目install到本地, 然后再打包A,这是的war才具有最新的代码。 不晓得你明白我的意思没, 你尝试用反编译工具看下你当前war下面的jar是否是最新的代码
aiwuhui 2014-10-13
  • 打赏
  • 举报
回复
引用 5 楼 whos2002110 的回复:
你是怎么测试的? 如果是web环境中,先去tomcat中项目的lib下面确认这个jar是否已经存在。 如果存在这个jar, 那看看你spring mvc的配置是怎样的, 你具体是要扫描哪些注解类? 我在使用spring过程中, 很多带注解的类也都是在依赖jar中, 只要路径配置正确,不存在扫描不到的情况。
项目A是web项目,项目b是jar,项目A引用了项目b,在myeclipse中 运行项目A,没问题。 现在将项目A 打包成war,将war放在tomcat中,启动tomcat,报错。jar中所有的service都没扫描到。
aiwuhui 2014-10-13
  • 打赏
  • 举报
回复
http://www.iteye.com/topic/1126642
加载更多回复(11)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧