class与lib中有相同的类名,优先调用那个?

时间:2022-09-09 00:17:00
calsses中有a.class
lib中的x.jar 也包含了a.class
当然这两个a.classes的方法内的代码不一定相同

容器优先调用那个,有没有正规的说明?

16 个解决方案

#1


jvm查找类,不仅仅是按名字找,还有包,如果包不同,也视为为同的class,如果package+class都相同,则根据classpath的设置顺序,前面的优先加载,一旦前面的被加载,后面的就再也不会被加载了

#2


"则根据classpath的设置顺序" 有没有各容器的的顺序?

#3


来学习

#4


该回复于2010-02-08 10:03:19被版主删除

#5


学习一下

#6


class与lib中有相同的类名,优先调用那个?

#7


调用顺序

#8


先加载classes目录中的,再加载lib目录中的jar,

但是如果lib中的jar有重复类,那么加载哪个是不确定的,有的服务器按拼音,也有的服务器按war中的ZipEntry的顺序。应该尽量避免

#9


引用 8 楼 chdw 的回复:
先加载classes目录中的,再加载lib目录中的jar,

但是如果lib中的jar有重复类,那么加载哪个是不确定的,有的服务器按拼音,也有的服务器按war中的ZipEntry的顺序。应该尽量避免

恩恩

#10


加载顺序说不定哪个先哪个后,尽量避免这种情况,包名、类名不管是在classes还是lib里最好不要相同了

#11


小弟有一事不明,关于一楼所说的。
同名PACKAGE下面可以有同名CLASS?

#12


1楼是指同时在classes目录中又在lib中的某些jar中。这样就会出现同Package同ClassName

#13


该回复于2010-02-08 10:04:34被版主删除

#14


通常情况下,包和项目的类不在一起。那么优先加载的是项目的类的。
还有在new的时候会提示你需要new哪一个的。

#15


尽量避免这种情况

#16


我们系统里面,classes里面的class文件优先级比jar包里面的高

#1


jvm查找类,不仅仅是按名字找,还有包,如果包不同,也视为为同的class,如果package+class都相同,则根据classpath的设置顺序,前面的优先加载,一旦前面的被加载,后面的就再也不会被加载了

#2


"则根据classpath的设置顺序" 有没有各容器的的顺序?

#3


来学习

#4


该回复于2010-02-08 10:03:19被版主删除

#5


学习一下

#6


class与lib中有相同的类名,优先调用那个?

#7


调用顺序

#8


先加载classes目录中的,再加载lib目录中的jar,

但是如果lib中的jar有重复类,那么加载哪个是不确定的,有的服务器按拼音,也有的服务器按war中的ZipEntry的顺序。应该尽量避免

#9


引用 8 楼 chdw 的回复:
先加载classes目录中的,再加载lib目录中的jar,

但是如果lib中的jar有重复类,那么加载哪个是不确定的,有的服务器按拼音,也有的服务器按war中的ZipEntry的顺序。应该尽量避免

恩恩

#10


加载顺序说不定哪个先哪个后,尽量避免这种情况,包名、类名不管是在classes还是lib里最好不要相同了

#11


小弟有一事不明,关于一楼所说的。
同名PACKAGE下面可以有同名CLASS?

#12


1楼是指同时在classes目录中又在lib中的某些jar中。这样就会出现同Package同ClassName

#13


该回复于2010-02-08 10:04:34被版主删除

#14


通常情况下,包和项目的类不在一起。那么优先加载的是项目的类的。
还有在new的时候会提示你需要new哪一个的。

#15


尽量避免这种情况

#16


我们系统里面,classes里面的class文件优先级比jar包里面的高