为什么我们不应该将tomcat库放在我们的appln库中

fre*_*iew 1 java jsp tomcat servlets tomcat7

我有一个在Tomcat 7中运行的Web应用程序.当我在我的应用程序/ WebContent/WEB-INF/lib中放置tomcat默认库(jsp-api.jar,servlet-api.jar等)时,它会引发异常: java.lang.IllegalStateException: No org.apache.tomcat.InstanceManager set in ServletContext

当我从我的lib中删除这些jar并在build.xml中设置tomcat lib时,它工作正常.任何人都可以向我解释为什么会这样吗?为什么我不能在我的lib文件夹中使用tomcat库?

Pio*_*cki 9

您基本上不希望将Servlet,JSP,EL或任何与容器相关的jar添加到您的应用程序WEB-INF/lib文件夹中.

这些库由容器提供.如果您明确添加它们,则部署的应用程序将出现问题(即两个相同的jar进入同一个类路径).

编辑:如果您需要这些jar来编译代码而不是将它们添加到类路径中 - 它们不需要驻留在应用程序的WEB-INF/lib中.

即如果您正在使用Eclipse,则可以添加"用户库":Properties -> Java Build Path -> Libraries -> Add Library这将定义所有与容器相关的库; 您也可以Add External JARs从tomcat7目录中选择它们.

编辑2:正如BalusC所指出的那样:"你可以将它作为目标运行时引用,然后Eclipse就会发挥作用.另请参阅我在该问题上发表评论的相关链接.无需使用用户库."

  • 或者只是将它作为目标运行时引用,然后Eclipse就会发挥作用.另见我对该问题发表评论的相关链接.无需摆弄用户库. (2认同)