gpt4 book ai didi

Java 动态 Web 项目类路径

转载 作者:行者123 更新时间:2023-11-30 11:12:56 25 4
gpt4 key购买 nike

我有一个项目同时在 Tomcat 上本地运行,但我计划将来部署到某个服务器。我有几个问题:

  1. 我正在使用 tomcat-jdbc.jar。我应该如何在项目中包含那个 jar?将其复制到 WEB-INF/lib 或添加对 tomcat 的库引用?后者是可移植的吗?即使我要部署到的服务器正在使用 jetty ,我也可以使用这个 jar 吗?
  2. 当我添加JRE 时,eclipse 要求我将它指向JRE 路径。在类路径中添加的行是

classpathentry kind="con"path="org.eclipse.jdt.launching.JRE_CONTAINER"

eclipse 是如何从这一行找出 JRE 所在的位置的?

  1. 当项目部署到服务器时,项目层次结构会是什么样子?

我的猜测是:

<project name>
----<build> (.class files)
----<WebContent>
--------<META-INF>
------------MANIFEST.MF
--------<WEB-INF>
------------<lib>
----------------external_jar.jar
------------web.xml
---------index.html

这是正确的吗?如果是这样,运行时将如何知道在哪里可以找到 JRE?还是Tomcat安装文件夹中的tomcat-jdbc.jar?

最佳答案

你的应用需要以下三种“资源”

  1. 系统资源:JRE 类、您部署的服务器提供的一些扩展/库。
  2. 您的依赖项:您使用的任何库,例如 common-utils、poi 等。这些 JAR 文件位于您的 web-inf/lib 文件夹中
  3. 你的类(class)。这些与 WAR 文件一起部署在 web-inf/classes

所以,回答你的问题:

  1. 如果您要部署到 Tomcat,将提供 tomcat-jdbc.jar。不过要注意版本。如果您的产品服务器是 tomcat,而开发服务器是 Jetty,那么您需要在本地 IDE 中提供此 jar,但不要将其导出到 WAR 文件中。但是如果你在 tomcat 上开发并说部署在其他服务器上,那么这个 jar 必须与你的 war 文件(web-inf/lib 文件夹)捆绑在一起。 Dev 和 Prod 服务器不必相同,但要注意 JRE 版本和对 Prod 服务器提供的库的依赖性。
  2. JRE 是您的服务器和 IDE (Eclipse) 的可配置设置
  3. 项目层次结构是正确的,但您很可能会部署为 WAR 文件,因此您的build 文件夹导出到 web-inf/classes 中。您可以使用任何 zip 编辑器打开 WAR 文件进行验证。

关于tomcat-jdbc.jar的可移植性不幸的是,这取决于 tomcat 库和版本。这个 jar 文件可能有更多的依赖关系,这可能会在以后导致问题。我建议不要依赖这个 jar,除非你打算部署在 tomcat 上。

关于Java 动态 Web 项目类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com