【UserLibrary正确使用方法】Tomcat报错The requested resource is not available.且控制台报错java.lang.ClassNotFoundException
同样的问题前景回顾,请参考我另一个帖子:
MMP的死结:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
文章提到: 出现java.lang.ClassNotFoundException的原因是lib导包的问题
而通过UserLibrary导入的用户库却没有问题
加载到tomcat里面运行时就出了问题
其实实际上UserLibrary正确的使用方法,不仅仅是"添加构建路径"这么简单
现象描述:
- XP 32位系统
- Eclipse-Mars.2-4.5.2
- JDK1.8
- 自己添加的用户库UserLibrary(包括Struts2,Hibernate,Spring,JSTL,JDBC等)
- Apache Tomcat 8.0.51
- 动态 Web 项目 Dynamic Web Project
- 导入用户库(项目右键→Build Path→Add Libraries...→User Library→勾选自己的用户库→Finish)
- 编写代码的时候,不会报错,编译通过
- 运行的时候会出现错误,且大部分如下java.lang.ClassNotFoundException:
严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
严重: Exception starting filter encodingFilter java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter
严重: Exception starting filter HiddenHttpMethodFilter java.lang.ClassNotFoundException: org.springframework.web.filter.HiddenHttpMethodFilter
- 然而,把所需要的jar包,放入"项目\WebContent\WEB-INF\lib"这里面,却可以正常运行,不会报错
- 而且,如果在10的前提下运行过一次,然后删除lib里的jar包再导入UserLibrary竟然也能运行通过(这个其实挺诡异)
- 再次重启Eclipse后第11步就失效,只能重复第十步
解决方法(正确的用户库UserLibrary使用方法)
- 创建用户库(Windows→Preferences→Java→BuildPath→User Library→New→输入用户库的名→勾选System library (added to the boot class path)→OK→Add External JARs...→找到你的jar文件选中→打开→导入后点OK
- 新建Dynamic Web Project项目
- 项目右键→Build Path→Configure Build Path...→在Libraries选项卡下,点Add Libraries...→User Library→勾选自己的用户库→Finish→右下角Apply(还没完,接着看)
- 步骤3弄好后参考图片打开Deployment Assembly→右侧点Add→Java Build Path Entries→选择你自己的用户库→Finish→Apply→OK退出属性窗口
- 至此所有UserLibrary相关配置都已解决,可以正常运行项目了
鸣谢(参考资料)
eclipse web项目 user library不能自动copy到项目lib目录
附上用户库 是否勾选 System library (added to the boot class path) 的区别: