Java中重名类冲突处理机制和Jar包加载顺序

  • 同一个ClassLoader实例加载的类不能重复(不同的class文件,同样的类名也是重复),如果强行用同一个ClassLoader实例加载同一个类,则会报错attempted duplicate class definition for {your class}
  • java -classpath(-cp)加载配置jar包(classes)时,会按照书写定义顺序加载class,之后重复加载的class会被忽略,只有第一个生效
  • Idea中可以通过在Project Settings -> Modules -> Dependencies中通过上下箭头调整jar加载顺序,其实也就是调整-classpath(-cp)后的jar包书写顺序
  • Tomcat下的jar包貌似不同版本加载策略不同
  • spring-boot是自定义的jar包加载策略,顺序未确认,猜测默认是按字母排序

你可能感兴趣的:(classpath,classloader,java)