当我们在Eclipse中创建动态Web项目时,可以选择设置目标运行时。这基本上设置了类路径,以确保我们的项目找到项目运行所需的所有必需的服务器类。然后,当我们通过点击“Run as” - >“Run on Server”来运行项目时,我们再次获得服务器列表供您选择。我知道我们总是可以选择“运行项目时始终使用此服务器”。但是我的问题是,当你已经选择目标运行时时,向用户提供一系列服务器来选择再次运行他们的项目的原理是什么。它是否像“在与目标运行时不同的服务器上测试您的项目”功能?Eclipse - 在“在服务器上运行”中选择服务器与设置“目标运行时”
回答
当您为项目指定服务器运行时环境时,服务器容器JAR将被添加到项目的类路径中。 IDE也不允许添加目标运行时服务器不支持的任何项目构面。这意味着目标运行时将确定可能的项目构面。 一旦创建项目,服务器容器类路径将有助于项目的类路径,因此项目所需的任何JAR以及服务器容器中可用的JAR都将可用于您的项目。例如,如果项目需要Java Servlet API并将Apache Tomcat添加为Target Runtime,则Tomcat Catalina - Java Servlet API将在项目类路径中可用,并且此运行时环境提供的所有JAR将用于编译。这意味着您不需要手动添加Servlet API JAR到您的项目类路径,目标运行时将提供它们。 编译完成后,一旦包含所有必需的JAR,就可以在其他服务器上运行项目,不必仅在目标运行时运行。 例如,在开发针对Apache Tomcat的Java Web应用程序时,编译后可以将其部署到另一个servlet容器或应用程序服务器上。
此外,应用程序或Web服务器可能会为您的JRE使用不同的JDK版本,而不是您当前的项目版本。通过指定目标运行时服务器,确保在项目中使用正确的库。
回答最后一个问题:Target Runtime将贡献Servlet API,以便您可以编译您的项目。否则,您将不得不手动添加JAR以使用Servlet API,例如HttpServlet或HttpServletRequest或HttpServletResponse对象。如果不在类路径上分配JAR,则无法进行编译,因为依赖关系没有解决。关于你的问题,哪个实现将在运行时使用 - 取决于项目设置。例如,如果你使用maven作为你的构建工具,你可以在maven中声明依赖范围:编译范围是默认值,意味着编译期间项目的类路径中应该有依赖关系。但是,如果您指出了提供的范围 - 这意味着JDK或服务器容器将在运行时提供依赖性。因此,例如,如果您指定了依赖项的范围,您将在运行时获得由servlet容器提供的Servlet API,即您选择“运行在服务器上”的相同容器。
查看您的项目库文件夹。您会看到一个来自运行时服务器的文件夹,如“Apache Tomcat v7.0”。这给你的项目依赖如“javax.servlet”。如果右键单击项目>属性>目标运行时,则可以删除服务器运行时并查看会发生什么情况。 Apache Tomcat库将消失,您的项目突然缺少依赖关系。将它添加回来,错误消失。
- 1. eclipse:在服务器上运行消失
- 2. Eclipse:在服务器上运行错误
- 3. Eclipse调试/在服务器上运行
- 4. 在Eclipse中设置新的Red5服务器运行时
- 5. 选择在服务器上运行的标签
- 6. 在Eclipse中的Tomcat服务器上运行jsp网站 - 如何在服务器启动时运行Main方法?
- 7. 从eclipse运行单个包(未在服务器上运行)
- 8. 在远程服务器上运行Eclim
- 9. 缺少选项在Eclipse STS“在服务器上运行”
- 10. GWT在外部服务器上运行
- 11. 在服务器上运行时为类设置参数
- 12. 如何在个人运行服务器上运行Django项目
- 13. 在运行时设置服务URL
- 14. 如何在本地服务器上运行eclipse m2e webapp项目?
- 15. Eclipse Juno,maven项目无法在服务器上运行
- 16. Eclipse:无法在Tomcat服务器上运行项目
- 17. 如何设置服务器运行Node.js?
- 18. 如何设置在线服务器的Java运行时环境
- 19. 如何在eclipse中运行java webservice在xampp中的apache服务器上运行?
- 20. 在生产服务器上运行faye服务器
- 21. 无法让散景服务器在服务器上运行
- 22. 在Mac脚本/服务器上运行Rails 1.1.2服务器
- 23. 在nodejs服务器上找不到socket.io-client服务器运行
- 24. 如何在生产服务器上运行Yard服务器?
- 25. “选择不能在任何服务器上运行”
- 26. 如何让Sonar Runner在源服务器上运行时运行?
- 27. 在IDE中运行,但在服务器上运行
- 28. 在eclipse上运行服务器tomcat时发生404错误
- 29. 当在服务器上运行时,Eclipse - Tomcat的 - java.lang.NoClassDefFoundError:javax/servlet/ServletConfig
- 30. 在Eclipse中隐藏“在服务器上运行”功能
这很有趣.....所以纠正我,如果我错了。所以你说我可以添加Target Runtime来编译我的项目,也就是说我可以使用Tomcat中的Java Servlet实现来编译我的项目。但是当运行项目时,我可以让我的项目运行例如Java Servlet的JBoss实现(即通过选择在不同的服务器上运行)。所以我的编译使用了Servlet API的一个实现。我的运行时使用不同的实现。 –
或者你是否在说我可以从Tomcat中接受Servlet实现类,并让我的项目在运行时在JBoss服务器上使用它们,例如 –
我已经使用最后一个问题的答案更新了我的信息。它不适合commen。 – fg78nc