我正在GWT( no maven )项目中进行一些清理工作。它在WEB-INF / lib中添加了很多jar。我知道这些罐子的用途(例如用于REST服务 - 幸运的是它已被记录)所以我想把它们放在适当的子文件夹中以获得更好的外观。
将它们重新添加到构建路径后(现在它们位于子文件夹中)我尝试运行SuperDevMode并收到多个警告:
服务器类' X'无法在Web应用程序中找到,但在系统类路径
中找到
和一些错误如:
找不到HK2 ServiceLocatorGenerator的默认实现
当我将这些jar放回WEB-INF / lib(没有子文件夹)并重新添加到构建路径时,一切运行都很好。
我的问题是:我能不能/我应该在WEB-INF / lib中使用子文件夹?如果是这样,为什么?
答案 0 :(得分:4)
服务器类加载器被编程为仅查看WEB-INF / lib,而不是其他文件夹或子文件夹。
我强烈建议进入maven世界,它有一个陡峭的学习曲线,但它将确保你的项目成长的坚实基础。 Maven的另一大优点是它可以自动获取你的库的最新安全补丁(Equifax,任何人?)。
Extract from the Apache Tomcat 7 Docs:
WebappX - 为部署在单个Tomcat实例中的每个Web应用程序创建一个类加载器。 Web应用程序的/ WEB-INF / classes目录中的所有解压缩的类和资源,以及Web应用程序的/ WEB-INF / lib目录下的JAR文件中的类和资源,都对此Web应用程序可见,但不是到其他人。