CLASSPATH,Java Buld Path(eclipse)和WEB-INF\LIB:使用什么,何时以及为什么?

san*_*oid 36 java eclipse jar classpath java-ee

我最近从.NET切换到J2EE,并且对于放置JAR文件的位置感到困惑.我知道CLASSPATH,WEB-INF和Eclipse的Java Web Path都是可以存储JAR的地方,但我对使用哪个文件夹,何时以及为什么感到困惑.

首先,我们有CLASSPATH.我通常通过进入"我的电脑"中的"环境变量"来设置它.我知道这是Java编译器查找JAR文件的默认位置.当我将文件夹或JAR添加到我的CLASSPATH环境变量时,为什么Eclipse,Java编译器和Web服务器会忽略它?

此外,我知道WEB-INF\LIB是一个可以放置Web应用程序将要使用的JAR文件的地方.但是,我将JAR放在WEB-INF\LIB中只是为了让它们被忽略.在什么情况下我应该将JAR放入WEB-INF\LIB文件夹?如何让Eclipse或Web服务器注意到它们?

到目前为止,唯一对我有用的是实际更改Eclipse项目的Java Build Path.我将选择我需要的JAR并点击"Add External JARs".大部分时间,当我这样做时,Eclipse将识别我的JAR并阅读其中的类.但是,我这样做时遇到了一堆奇怪的随机错误(我认为这主要与依赖关系有关).出于某种原因,我只是觉得这不是正确的做事方式,而是我错过了一些重要的信息.我什么时候应该在Eclipse中手动添加外部JAR,何时应该以不同的方式做事?为什么Eclipse的Java Build Path似乎不知道我的CLASSPATH环境变量中的文件夹?

真的,我想更好地理解CLASSPATH,Eclipse的Java构建路径和WEB-INF/LIB文件夹 - 它们服务的目的,它们之间的关系,以及我应该将JAR放在各种各样的地方的情况.我很感激你能给我的任何建议,或者你可以推荐的任何文章.

谢谢.

Car*_*icz 31

CLASSPATH您的环境设置只影响独立的Java应用程序,即你从命令提示符或图标来运行的.正如您所注意到的,Eclipse忽略了这一点.它设置了自己的每个项目类路径.

javac并且java,如果从命令提示符调用,应该/可能遵循这条路径,但这不再是一个很好的做法.事实证明,每个应用程序都需要自己的东西,所以全局CLASSPATH并没有真正做任何好事.现代的做法是简单地用指定的类路径-cp的命令行选项javacjava.

独立的Web应用程序服务器也将设置自己的类路径.从命令行或GUI,WebAppServers通常由使用设置类路径的脚本(.BAT.sh)启动-cp.Tomcat有一个名为common或者common/lib希望看到服务器可用的库以及在其下运行的所有程序的目录.但是你通常不需要/想要弄乱这个,因为应用程序习惯于提供自己的库收集器WEB-INF/lib.

因此,对于Web应用程序,您可以将varous jar放入lib目录中WEB-INF,假设Eclipse为您预先构建了这样的目录结构.

您需要的所有库也需要为Eclipse所知.在Project Explorer中,我一次选择它们的全部,右键单击并选择Build Path | add to build path.这比手动弄乱Eclipse的项目构建路径更容易.


Tho*_*sen 11

Java有着悠久的历史和经验表明,有些想法很好,有些想法很糟糕.

CLASSPATH环境变量是告诉Java机器从程序中找到类的初始方法,并且对命令行程序运行得相当好.人们很快发现,这不应该是一个全局性的东西(因为从长远来看,这往往会搞砸),而是一个每程序的东西.这可以通过创建包装脚本/ BAT文件来完成,该文件设置变量并运行Java机器.

一切都很好,然后人们想用Java编写Web服务器.Servlet API的创建,其中Web应用程序是一个独立的单元-这导致对于CLASSPATH中每个 Web应用程序 WEB-INF/classes中加的jar-下的文件解压缩文件下的WEB-INF/lib目录下.只有这一点.这意味着将忽略全局CLASSPATH变量.这已被发现是一件非常好的事情,因此这个概念已经迁移到其他地方.

例如,一个"可执行的JAR"(其中的Eclipse称之为"可运行罐子")的调用与"Java的罐子foobar.jar"包含了一个特殊的清单文件中的Jar完整的类路径.用于从Web服务器启动Java程序的Java Web Start明确列出了服务器上配置文件中的完整类路径.

但是,为了让你开始.如果要编写Java Web应用程序:

  1. 获取Eclipse Java EE版本.
  2. 创建一个新的动态Web项目,例如名为foobar.
  3. 在foobar/WebContent/WEB-INF/lib中拖放(或复制/粘贴)所需的jar文件
  4. 创建一个名为foobar/WebContent/index.jsp的新文件.在空白文件类型中<h1>Hello World <%= new java.util.Date() %></h1>
  5. 右键单击index.jsp的编辑器,选择Run - > Run on Server,然后在localhost服务器上选择Basic - > J2EE preview,然后单击Finish.

现在,浏览器窗口将在浏览器中或Eclipse内部打开,这将呈现您的JSP页面.您可以更改JSP页面,使用Ctrl-S保存它并重新加载浏览器窗口以查看更改.