java开发中 为什么有些包放在lib文件夹中就行 而有些包要配置到classpath环境变量中去?

比如 网站开发中 连接数据库时直接将驱动程序放在lib中就行 而写servlet时要把servlet-api.jar配置到classpath环境变量中去?

java web项目中,eclipse会自动到lib文件夹中查找需要依赖的jar,所以把驱动程序放到lib文件夹中去就可以,而servlet-api.jar是Tomcat内置的jar包,但是eclipse是缺省的,也就是需要指定该jar包的位置,即需要配置classpath,如果你拷贝该jar包到lib文件夹中,在运行时,Tomcat有如下加载顺序。

Tomcat的class加载的优先顺序一览
1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。
2.环境变量CLASSPATH中的jar和class文件。
3.$CATALINA_HOME/common/classes下的class文件。
4.$CATALINA_HOME/commons/endorsed下的jar文件。
5.$CATALINA_HOME/commons/i18n下的jar文件。
6.$CATALINA_HOME/common/lib 下的jar文件。
(JDBC驱动之类的jar文件可以放在这里,这样就可以避免在server.xml配置好数据源却出现找不到JDBC Driver的情况。)
7.$CATALINA_HOME/server/classes下的class文件。
8.$CATALINA_HOME/server/lib/下的jar文件。
9.$CATALINA_BASE/shared/classes 下的class文件。
10.$CATALINA_BASE/shared/lib下的jar文件。
11.各自具体的webapp /WEB-INF/classes下的class文件。
12.各自具体的webapp /WEB-INF/lib下的jar文件。
它会在第12步之前就加载了你需要的servlet-api.jar,所以不需要拷贝到lib文件夹中,说白了,配置classpath是为了让eclipse在你编写程序时找到那个jar。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-06-10
java开发中,eclipse会自动到lib文件夹中查找需要依赖的jar,所以把驱动程序放到lib文件夹中去就可以,而servlet-api.jar是Tomcat内置的jar包,但是eclipse是缺省的,也就是需要指定该jar包的位置,即需要配置classpath,如果拷贝该jar包到lib文件夹中,在运行时,Tomcat有如下加载顺序。具体操作建议去千锋教育系统学习,千锋教育实力雄厚,师资力量强大,值得每位学员的信任!

Java开发中经常遇到的小问题:
1、java.lang.ArithmeticException
算术运算异常, 因为除数为0,所以引发了算数异常。
2、java.lang.StringIndexOutOfBoundsException: String index out of range: -1
这是截取字符串substring()产生的下标越界异常。原因是可能是字符串为空,或长度不足1。
3、java.lang.NullPointerException空指针异常
出现该异常的原因在于某个引用为null,但却调用了它的某个方法,这时就会出现该异常。

想要了解更多有关java开发的相关信息,推荐咨询千锋教育。千锋励精图治,不改教育初心。十一年来,千锋以政策为引导,不断完善国内特色现代职业教育体系建设,充分发挥教研师资队伍使命,构建品质教育,加大创新型人才培养力度,为经济发展提供智力人才和智力支撑,成为新时期职业教育发展的新方向,在同行业中有很高的美誉度。实力强大,请每位学员放心选择!