Java /WEB-INF/classes vs/WEB-INF/lib
我想将我的Java /WEB-INF/classes vs/WEB-INF/lib,java,web-applications,jakarta-ee,Java,Web Applications,Jakarta Ee,我想将我的JavaEE6web类(bean、过滤器、servlet)打包到jar中,并将其与其他实用程序jar一起放入/web-INF/lib/目录,然后完全放弃/web-INF/classes/目录 在类加载、访问应用程序上下文等方面,两者之间是否存在实质性差异 谢谢 PS:每当我在谷歌上搜索任何java规范时,我总是被重定向到Oracle文档索引,它离原始url有十几次点击。有人知道那里发生了什么吗?我会选择/WEB-INF/classes。它允许您在调试模式下运行应用程序,并在更改时热交换
JavaEE6
web类(bean、过滤器、servlet)打包到jar中,并将其与其他实用程序jar一起放入/web-INF/lib/
目录,然后完全放弃/web-INF/classes/
目录
在类加载、访问应用程序上下文等方面,两者之间是否存在实质性差异
谢谢
PS:每当我在谷歌上搜索任何java规范时,我总是被重定向到Oracle文档索引,它离原始url有十几次点击。有人知道那里发生了什么吗?我会选择
/WEB-INF/classes
。它允许您在调试模式下运行应用程序,并在更改时热交换类。如果您将所有内容打包为一个jar,那么每次更改类时都必须重新打包并重新部署应用程序 简单地说:假设您有classorg.example.Test.class
,如果您将它放入jar和WEB-INF/lib/
目录中,并将同一个类复制到WEB-INF/classes/
中,那么该应用程序的类加载器将使用最后一个类(来自WEB-INF/classes/
)
有时你可以利用它作为优势-我有一个库,它有一个bug。。。我查找该类的源代码(bug在哪里;我错过了如何知道bug在该类中的部分,这是另一个故事),我使用固定代码将该类添加到项目中,并将其编译成
WEB-INF/classes/
,而库仍然存在于WEB-INF/lib/
中。固定类将一直使用,直到库被固定。在Tomcat Servlet容器的定义中:WEB-INF\classes
在WEB-INF\lib
之前搜索。您可以选择将您的类加载委托给您的自定义类加载程序,即使这样,上面的顺序也会得到维护
如果您选择与其他供应商合作,例如JBOss、Glassfish、Jetty,可能会有不同的订单,但我不确定这些订单。谢谢。但是,除了调试之外,它在功能上是否与应用程序相同?谢谢,此功能可能会有所帮助。