Java 为什么我们不把tomcat库放在我们的appln库中呢

Java 为什么我们不把tomcat库放在我们的appln库中呢,java,jsp,tomcat,servlets,tomcat7,Java,Jsp,Tomcat,Servlets,Tomcat7,我有一个在Tomcat7中运行的web应用程序。 当我将tomcat默认库jsp api.jar、servlet-api.jar等放在我的应用程序/WebContent/WEB-INF/lib中时,它抛出一个异常:java.lang.IllegalStateException:No org.apache.tomcat.InstanceManager set in ServletContext 当我从我的库中删除这些JAR并在build.xml中设置tomcat库时,它工作得很好。有人能解释一下为

我有一个在Tomcat7中运行的web应用程序。 当我将tomcat默认库jsp api.jar、servlet-api.jar等放在我的应用程序/WebContent/WEB-INF/lib中时,它抛出一个异常:java.lang.IllegalStateException:No org.apache.tomcat.InstanceManager set in ServletContext

当我从我的库中删除这些JAR并在build.xml中设置tomcat库时,它工作得很好。有人能解释一下为什么会发生这种情况吗? 为什么我不能在我的lib文件夹中使用tomcat库?

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

这些库由容器提供。如果显式添加它们,部署的应用程序将出现问题,即两个相同的JAR进入同一类路径

编辑:如果您需要这些JAR来编译代码,那么您可以将它们添加到类路径中——它们不需要驻留在应用程序的WEB-INF/lib中

例如,如果您正在使用Eclipse,您可以添加“用户库”:属性->Java构建路径->库->添加库,它将定义所有与容器相关的库;您还可以添加外部JAR,只需从tomcat7目录中选择这些JAR

编辑2:正如BalusC所指出的:您可以将其作为目标运行时引用,然后Eclipse将发挥神奇的作用。另请参见我对该问题发表评论的相关链接。无需修改用户库。

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

这些库由容器提供。如果显式添加它们,部署的应用程序将出现问题,即两个相同的JAR进入同一类路径

编辑:如果您需要这些JAR来编译代码,那么您可以将它们添加到类路径中——它们不需要驻留在应用程序的WEB-INF/lib中

例如,如果您正在使用Eclipse,您可以添加“用户库”:属性->Java构建路径->库->添加库,它将定义所有与容器相关的库;您还可以添加外部JAR,只需从tomcat7目录中选择这些JAR


编辑2:正如BalusC所指出的:您可以将其作为目标运行时引用,然后Eclipse将发挥神奇的作用。另请参见我对该问题发表评论的相关链接。不需要摆弄用户库。

您不应该在应用程序中捆绑j2ee stand JAR。它们由应用服务器提供。如果希望JAR可用于编译,请在构建应用程序时将其放入编译路径中。但不要在应用程序中捆绑它们


在绑定应用程序时,所有IDE都提供了EXCULD JAR的操作。

您不应该在应用程序中绑定j2ee标准JAR。它们由应用服务器提供。如果希望JAR可用于编译,请在构建应用程序时将其放入编译路径中。但不要在应用程序中捆绑它们


所有IDE在捆绑应用程序时都提供了exculde JAR的操作。

感谢您的回复。为了便于汇编,我不得不添加它们。没有这些JAR我无法编译。您可以添加驻留在不同于WEB-INF/lib位置的JAR。也就是说,如果您正在使用Eclipse,您可以添加“用户库”,它定义了所有与容器相关的lib,或者您可以添加“外部jar”,然后从tomcat7目录中选择它们。或者只是将其作为目标运行时引用,那么Eclipse将发挥神奇的作用。另请参见我对该问题发表评论的相关链接。无需修改用户库。@freepublicview如果您对任何答案感到满意,请随时接受,这样问题就可以标记为已回答。谢谢您的回答。为了便于汇编,我不得不添加它们。没有这些JAR我无法编译。您可以添加驻留在不同于WEB-INF/lib位置的JAR。也就是说,如果您正在使用Eclipse,您可以添加“用户库”,它定义了所有与容器相关的lib,或者您可以添加“外部jar”,然后从tomcat7目录中选择它们。或者只是将其作为目标运行时引用,那么Eclipse将发挥神奇的作用。另请参见我对该问题发表评论的相关链接。不需要摆弄用户库。@freepublicview如果您对任何答案感到满意,请随意接受,这样问题就可以标记为已回答。相关:每个人都说您不应该,但实际上您不能,在您的web应用程序中包括JEE JAR。相关:每个人都说您不应该,但实际上您不能,在您的web应用程序中包含JEE JAR。