为什么说搞懂Eclipse的Java Build Path很重要呢?因为搞懂了它才知道eclipse如何放置源代码和输出文件的,也就是搞懂从哪里来到哪里去的问题。
Build Path是指定Java工程所包含的资源属性集合。
在一个成熟的Java工程中,不仅仅有自己编写的源代码,还需要引用系统运行库(JRE)、第三方的功能扩展库、工作空间中的其他工程,甚至外部的类文件,所有这些资源都是被这个工程所依赖的,并且只有被引用后,才能够将该工程编译成功,而Build Path就是用来配置和管理对这些资源的引用的。
Java Build Path用于设置Java的构建路径,管理Java工程所包含的资源,使工程结构清晰合理。包括以下几项:
Source:源码包
Projects:当前项目依赖的其他项目
Libraries:当前项目依赖的库文件
Order and Export:调用优先级、打包等相关设置
一、Source
Source包括:source folder和output folder两块
Source folder:存放.java源文件的根目录;
Output folder:存放.class编译输出的根目录;
在纯Java项目中,一般把src设置为Source folder,把Bin设置为output folder;
在Web项目中,一般把src设置为Source folder,把WEB-INF/classes设置为output folder;
如果没有把src设置为source folder,则src文件夹在.java文件的package中要以包名的方式加入;例如:
"src"未设置为source folder:package src.com.decisiontree;
src"设置为了source folder:package com.decisiontree;
二、Projects
关联到其他本地项目进行搜索;
三、Libraries
管理类库
Add JARs:添加当前项目目录中的jar文件;
Add External JARs:添加当前项目之外的外部目录的jar文件;
Add Variable:添加变量;
Add Library:添加JRE系统的库;
Add Class Folder:添加当前项目中编译之后的.class文件,选择你的项目class文件所在的文件夹;
Add External Class Folder:添加当前项目之外的.class文件,选择你的外部class文件所在的文件夹;
下面着重介绍Add library中的User Libraries
添加User Library,具体做法如下:
1. 选中工程右键->build path->Add Libraries...
2. 选择User Library->next
3. 点击User Library按钮
4. 点击new按钮
5. 输入Library name(我要导入的是struts 2.1.6的jar包和jdbc的jar包,为了方便记忆,就可以用如Struts 2.1.6 Library)
6.点击ok
7.选中该user library, 然后点击add jars
8.找到对应jar包,依次确定即可。
User Liberary加到Eclipse中,只是eclipse中生效,就是只有Eclipse知道那些引用的类放在哪里,但是如果你要web工程启动正常,是要告诉Tomcat等容器,你的jar包是在哪里(放在lib目录下,容器就知道了)。所以就有这种情况出现,在eclipse中加用户库,只是为了调试,不加入用户库,eclipse找不到import的类,就会出现红色的X号,不把用户库中的JAR包放到lib下,容量找不到引入的类,就会报错。
add jar 和add external jars 与add library 中User Libraries的区别是:
通过“add jar” 和“add external jars”添加的jar包作为程序的一部分被打包到最终的程序中。通过“User Libraries”添加的jar包不是。
关于Jar包 build path的作用:
jar包不能在随意的地方。 不管是Java Application 还是 Java Web Application 。
Java虚拟机是根据Java ClassLoader(类加载器)决定如何,到那里去加载Class :
我们之所以把jar包放在classPath下,是因为存在ClassPath ClassLoader
我们之所以可以不在ClassPath指定一些Jar包,但在Java程序中也能使用。
那是因为有ClassPath ClassLoader的父类加载器负责加载。如jrd目录下jre\lib\*.jar
我们之所以把Jar包放入webroot下的lib文件夹,并且可以在我们的程序中使用,那是容器实现了自己的ClassLoader。(Web中间件服务器类加载的机制和sun公司提供的3个默认加载器不同。)
所以说能不能加载Jar,加载哪里的Jar,是根据ClassLoader决定的。
四、Order and Export
调用优先级:越往上调用优先级越高;
JRE System Library打钩表示导出jar时将这个库的内容也打包到jar中。
五、配置文件
java build path的配置会保存在.classpath文件中,如下所示:
参考资料:
https://blog.csdn.net/qq_31493831/article/details/78585865
https://www.yii666.com/article/347433.html
https://www.yii666.com/article/347433.html
https://www.cnblogs.com/zjuhaohaoxuexi/p/15920443.html#%E4%BA%94%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6