java项目中的classpath到底指向的哪里[通俗易懂]

今天在项目里看到好多地方都用到了类路径,并且自己对路径还不是很清楚,所以就在网上百度了一下!上面图片的意思简单来说,就是classpath只能表示lib目录和WEB-inf/classes路径下的文件,calsspath不能表示的src路径下面的文件,但是从项目结构来看,配置文件一般是不放在放在WEB-INF下面啊,并且也没有看到classes路径,lib目录不是放依赖ja…

大家好,又见面了,我是你们的朋友全栈君。

这里写图片描述
这里写图片描述
今天在项目里看到好多地方都用到了classpath,并且自己对calsspath到底指向哪里还不是很清楚,所以就在网上百度了一下!

这里写图片描述
上面图片的意思简单来说,就是classpath只能表示lib目录和WEB-inf/classes路径下的文件,calsspath不能表示的src路径下面的文件,
这里写图片描述
但是从项目结构来看,配置文件一般是不放在放在WEB-INF下面啊,并且也没有看到classes路径,lib目录不是放依赖jar包的吗。此时感觉凉凉了。并且测试了一下,在WEB-INF路径下面创建了lib和classes文件夹,这里写图片描述
这里写图片描述
测试的结果也很明显,访问不到WEB-INF下面的classes和lib路径下面的文件,报错了。

但是,我有一想,不对啊,明明项目中能用classpath引入配置文件,那到底是怎么引入的呢?
从第一张图和第二张图,使用classpath访问到了src路径下面的main/resources文件中的配置文件
打开编译后的项目,发现项目文件中有一个文件名为.classpath的文件,点开看了一下
这里写图片描述
这里写图片描述
具体classpath文件的介绍可以参考下面博客
.classpath文件详解

.classpath文件用于记录项目编译环境的所有信息,包括:源文件路径、编译后class文件存放路径、依赖的jar包路径、运行的容器信息、依赖的外部project等信息。如果把该文件删除,则eclipse不能讲该工程识别为一个正常的java工程,仅仅当做普通的文件夹而导致不能正常运行。

  1. 源文件的具体位置(kind=”src”)
  2. 运行的系统环境(kind=”con”)
  3. 工程的library的具体位置信息(kind=”lib”)
  4. 在每个lib的xml子节点中,有关于它的其它配置信息(例如我配置的那个”javadoc_location”)
  5. 项目的输出目录(kind=”output”)

总体上说这个文件就是配置整个工程的运行环境。

这就很明白了,classpath值得就是(kind=”src”)所指定的文件,并且此时的可以看到(kind=”src”)的设置并没有包含WEB-INF文件。此时我们要验证WEB-INF文件被classpath访问跟这个设置有关吗。

首先我们将applicationContext.xml文件放在WEB-INF路径下面,并且.classpath文件内容如下图,启动本项目
这里写图片描述
这里写图片描述
这里写图片描述

打开项目的原始文件,发现applicationContext.xml并没有出现

这里写图片描述

此时我们将.classpath文件中添加
classpathentry kind=”src” path=”WebContent/WEB-INF”/
这里写图片描述

再次启动本项目
这里写图片描述

打开项目的原始路径下,发现applicationcontext.xml出现在了WebContent/WEB-INF下面

这里写图片描述

由此可以总结:

1、在编译时生成的文件.classpath 中kind=”src” 的类型为classpath 路径,在项目里可以用classpath:xxx方式引用。也可以手动过来自己添加、扩大classpath的范围, .

也就是说你想知道classpath可以引用哪里的文件,点开.classpath 看看kind=”src” 的就知道了

2、在编译生成的项目下的bulid/classes/ 下具有的文件都是classpath 路径下的文件,都可以通过classpath:方法获取。(classes:指的是编译后的文件)

3、”src不是classpath, WEB-INF/classes,lib才是classpath”这句话也会不对的,这是编写项目时看到的,真正的classpath是在编译后文件存放路径,默认是的bulid/classes/ (如结论2)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125075.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pycharm专业版注册激活

    Pycharm专业版注册激活快去这个链接:http://blog.csdn.net/lanchunhui/article/details/51660951http://idea.lanyus.com/

    2022年8月26日
    8
  • VMware虚拟机ubuntu显示屏幕太小解决办法

    VMware虚拟机ubuntu显示屏幕太小解决办法使用VMware安装的ubuntu虚拟机的显示屏幕太小,可以通过在VMware里安装“VMwareTool”插件解决,安装步骤记录一下。1.更改ISO文件路径安装VMwareTool需要用到虚拟光驱,加载一个ISO文件,在安装的时候加载的是ubuntu安装文件“ubuntu-16.04.2-desktop-amd64.iso”,如果不更改这个加载路径,相当于在虚拟机

    2022年6月7日
    55
  • c语言qq密码程序设计,【转】C语言实现QQ密码大盗

    c语言qq密码程序设计,【转】C语言实现QQ密码大盗该楼层疑似违规已被系统折叠隐藏此楼查看此楼【转】C语言实现QQ密码大盗一般的盗密码的软件的软件都是通过监视键盘来获得密码,这样操作比较方便,但是这样也存在一定问题,密码有的时候不是很准确,因为有的人输入密码并不是从前到后输入,当然这样的人也是少数,盗密码嘛,当然去得到那些比较粗心的人的密码!通过安装钩子来监视QQ登陆界面就是获得密码的方法,在安装前得先找到登陆窗口的句柄,当钩子安装后,记录键盘…

    2022年7月20日
    19
  • 音视频技术的高光时刻: LiveVideoStackCon 2019上海 音视频技术大会

    Mux流媒体专家PhilCluff在4月19、20日举办的LiveVideoStackCon2019上海音视频技术大会中发表了主题演讲,并根据自己在大会中的所见所闻…

    2022年4月15日
    47
  • eclipse SVN javaHL not available 问题解决「建议收藏」

    eclipse SVN javaHL not available 问题解决「建议收藏」SVN插件下载地址及更新地址,你根据需要选择需要的版本。Linksfor1.8.xRelease:EclipseupdatesiteURL:http://subclipse.tigris.org/update_1.8.xsvn插件包下载:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240Linksfor1.6.xRelease:EclipseupdatesiteURL:ht…

    2022年10月14日
    3
  • angular面试问题_kafka面试题

    angular面试问题_kafka面试题Angularv8+面试系列Angular面试题汇总1-基本知识Angular面试题汇总2-Component/Service目录Angular中的测试有哪些种,基于哪些测试框架什么是Karma?在Angular中有什么作用?什么是Jasmine?在Angular中有什么用?什么是protractor?单元测试UnitTest什么是Angular中的单元测试?AngularUT的最佳实践测试Service时,有其他依赖如何处理?端到端测试(e2e)Angular中的测试有哪些.

    2025年12月5日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号