我想将我的Java EE6 web类(beans、过滤器、servlets)打包到jar中,并将其与其他实用程序jar放在/WEB-INF/lib/目录中,并完全放弃/WEB-INF/classes/目录。
在类加载、访问应用程序上下文等方面,两者之间有什么本质上的区别吗?
谢谢。
注:每当我在谷歌上搜索任何java规范时,我总是被重定向到Oracle文档索引,它距离原始url只有十几次点击。有人知道那里发生了什么吗?
发布于 2011-01-20 02:52:00
我会去找/WEB-INF/classes。它允许您在调试模式下运行应用程序,并在更改时热插拔类。如果将所有内容打包为jar,则每次更改类时都必须重新打包和重新部署应用程序。
发布于 2011-01-20 02:54:59
简而言之:假设您有org.example.Test.class类,如果您将其放入jar和WEB-INF/lib/目录中,并将同一类复制到WEB-INF/classes/中,那么该应用程序的类加载器将使用最后一个类(来自WEB-INF/classes/)。
有时你可以利用它作为优势-我有一个库,它有一个bug……我寻找那个类的源代码( bug在哪里;我错过了我知道bug在那个类中的部分,那是另一回事了),我用固定的代码将那个类添加到项目中,它被编译成WEB-INF/classes/,而库仍然存在于WEB-INF/lib/中。固定的类将一直使用,直到库被修复。
发布于 2017-09-26 00:23:00
在Tomcat Servlet容器的定义中:在WEB-INF\lib之前搜索WEB-INF\classes。您可以选择将您的类加载委托给您的自定义类加载器-即使这样也可以保持上面的顺序。
如果你选择使用不同的供应商,例如JBOss,Glassfish,Jetty,它可能会有不同的顺序,但我不确定这些。
https://stackoverflow.com/questions/4739302
复制相似问题