如何在我的Java解决方案中包含servlet-api.jar?

如何在我的Java解决方案中包含servlet-api.jar?,java,servlets,classpath,java-7,Java,Servlets,Classpath,Java 7,我有一个Java解决方案,需要在我的类路径中包含servlet-api.jar 如果我将servlet-api.jar从tomcat文件夹复制到项目文件夹中,它就可以工作。但是当我升级到Java7时,servlet-api.jar是一个新版本,需要更换 我能绕开这个问题吗?我不认为我可以直接将它指向我本地开发机器上的tomcat文件夹…问题不在于选择Java 7还是JDK的另一个版本。问题是:您希望在webapp中使用哪个版本的ServletAPI规范。当然,这个选择也会对您能够使用的servl

我有一个Java解决方案,需要在我的类路径中包含servlet-api.jar

如果我将servlet-api.jar从tomcat文件夹复制到项目文件夹中,它就可以工作。但是当我升级到Java7时,servlet-api.jar是一个新版本,需要更换


我能绕开这个问题吗?我不认为我可以直接将它指向我本地开发机器上的tomcat文件夹…

问题不在于选择Java 7还是JDK的另一个版本。问题是:您希望在webapp中使用哪个版本的ServletAPI规范。当然,这个选择也会对您能够使用的servlet容器产生影响。例如,如果选择Servlet3.0,则必须使用Tomcat7,而不是Tomcat6


因此,首先选择要使用哪个版本的API(以及容器),然后将相应的jar添加到项目中,并在类路径中使用该jar进行构建。只需确保不要将此jar文件添加到已部署webapp的WEB-INF/lib文件夹中。jar应该只用于编译。在运行时,容器在自己的类路径中已经有了这个jar。

我不喜欢让servlet api jar满足ant构建。 比方说,我们从Tomcat 6.0.42移动到6.0.43或7.x.x。或是玻璃鱼。 必须有人确保从tomcat安装中获得最新的jar,并在项目中替换它

servlet-api.jar
重命名为
servlet-api-tomcat-6.0.42.jar
可能是一种解决方案。它还可能向开发人员指出,当我们更改Web容器时,它必须被替换。
有更清洁的解决方案吗

你根本不应该。您的问题的副本不清楚,您是否收到任何错误/消息?@BalusC:如果只使用Eclipse编译项目,这很好,但是如果使用真正的构建工具,则相应的servlet api jar必须以某种方式位于类路径中,如果没有使用Gradle、Ivy或Maven等依赖关系管理工具,jar应该在项目中。只是不在部署战争中。@JBNizet:他提出这个问题的方式表明他在webapp自己的运行时类路径中有它,这绝对是错误的™. 否则,我看不出有任何合理的潜在原因为什么会提出这样一个奇怪的问题。像Maven这样的依赖关系管理工具不是这样工作的。他们有自己的方法来管理依赖项,独立于手动放置在项目中的JAR。我同意。我的观点是,尽管您的链接答案很好地解释了如何使用Eclipse通过服务器配置引用servlet api jar,但它并没有解释在Eclipse不存在的情况下如何操作(例如,项目使用ant),它也没有解释如何解决OP问题:能够同时针对Tomcat 6和Tomcat 7。我希望该网站能够在安装了Tomcat 6或Tomcat 7的服务器上运行。是否可以在我的web应用程序中完全不包含jar?部署的web应用程序不能包含jar文件。你只能用它来编译你的应用程序(我想这很清楚,因为我的答案中已经用了大写,所以我在这里用粗体重复)。因为您希望能够在Tomcat6上部署应用程序,所以请使用Tomcat6附带的servlet-api.jar来编译您的应用程序。API和Tomcat是向后兼容的,因此您的应用程序将在Tomcat7上正常运行,无需修改。