当前位置: 首页 > 面试题库 >

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

阚亮
2023-03-14
问题内容

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

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

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

到目前为止,对我而言唯一有效的方法是为Eclipse项目更改Java Build
Path。我将选择所需的JAR,然后点击“添加外部JAR”。在大多数情况下,Eclipse会识别我的JAR并读取其中的类。但是,在执行此操作时,我遇到了一堆奇怪的随机错误(我认为,这主要与依赖有关)。由于某种原因,我只是觉得这不是正确的处理方式,并且我正在丢失一些重要的信息。什么时候应该在Eclipse中手动添加外部JAR,什么时候应该做不同的事情?为什么Eclipse的Java
Build Path似乎不了解CLASSPATH环境变量中的文件夹?

确实,我只是想更好地了解CLASSPATH,Eclipse的Java Build Path和WEB-INF / LIB文件夹-
它们的用途,它们之间的关系以及在各种情况下应放置JAR的位置情况。我会很感激您可以给我的任何建议,或者您可以推荐的任何文章。

谢谢。


问题答案:

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

javacjava(如果从命令提示符处调用)应该/可以遵循此路径,但是这样做不再被认为是一种好习惯。事实证明,每个应用程序都需要自己的一套东西,因此,全局CLASSPATH并不能真正起到任何作用。现代实践是-cp使用javacor
的命令行中的选项简单地指定类路径java

独立的Web应用程序服务器还将设置其自己的类路径。WebAppServers通常是从命令行或GUI通过脚本(.BAT.sh)启动的,该脚本使用设置类路径-cp。Tomcat有一个名为的目录,common或者common/lib它希望在其中查看服务器及其下运行的所有程序应该可用的库。但是您通常不需要/不希望对此感到困惑,因为应用程序习惯于在中提供自己的库集合WEB- INF/lib

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

您还需要使Eclipse知道您需要的所有库。在“项目资源管理器”中,我一次选择了全部,右键单击并选择Build Path | add to build path。这比手动弄乱Eclipse的项目构建路径更容易。



 类似资料:
  • 本文向大家介绍asp.net-web-api 什么以及为什么使用ASP.NET Web API?,包括了asp.net-web-api 什么以及为什么使用ASP.NET Web API?的使用技巧和注意事项,需要的朋友参考一下 示例 什么?:用于构建基于HTTP的端点的完全受支持的可扩展框架。在HTML5的世界中,移动设备和现代开发技术HTTP已成为构建丰富的可伸缩服务的默认选项。该ASP.NET

  • 问题内容: 抱歉,如果我有点模棱两可,但是我试图了解使用Node.js而不是其他服务器端语言的真正优势。 我是JavaScript爱好者,所以我可能会玩Node.js,但我想知道是否应该在项目中使用它。 问题答案: 在V8上发生了异步非阻塞I / O 构建。 因此,我们拥有了Google JavaScript解释器V8的所有性能提升。由于JavaScript性能竞赛尚未结束,您可以期望Google

  • 问题内容: 有人向我解释什么和是谁? 我感到困惑的用例都和。 如果您还可以包括一段代码来进行解释,那将是很好的。谢谢! 问题答案: 的目标和是抽象不同的方式来输入和输出:流是一个文件,网页,或者屏幕不应该的事。重要的是您从流中接收信息(或将信息发送到该流中。) 用于阅读许多内容。 用于写很多东西。 这是一些示例代码。它假定和已经创建:

  • 问题内容: 为什么以及何时应该在php中使用该函数?使用后是否应该始终使用它?我读到我必须使用它来防止会话固定,这是唯一原因吗? 问题答案: 什么啊 就像函数名称所说的那样,它是一个函数,它将用新的ID替换当前的会话ID,并保留当前的会话信息。 它有什么作用? 它主要有助于防止会话固定攻击。会话固定攻击是恶意用户试图利用系统中的漏洞固定(设置)另一个用户的会话ID(SID)的地方。这样,他们将拥有

  • 问题内容: 我一直在将从服务接收的所有数据直接保存到局部变量,控制器或范围。我认为这将被视为浅表副本,对吗? 最近,有人告诉我使用angular.copy来创建深层副本。 但是,当我的Angular应用程序使用深层复制信息时,它们似乎以相同的方式工作。 使用深层副本(angular.copy)有什么特别的好处,请您向我解释一下吗? 问题答案: 将对象或数组的值分配给另一个变量时, 请使用angul

  • 我现在正在尝试学习Spring Security,我已经看到了许多使用它的不同例子。我知道CSRF是什么,Spring Security默认启用了它。我很想知道的是这种定制。 这一行是什么样的定制,以及何时适合使用它。如果有人能给我一个简单的解释,我将不胜感激。