ServiceLoader重复加载同一个jar包时Error reading configuration file
时间: 2024-04-22 18:27:05 浏览: 161
浅谈两个jar包中包含完全相同的包名和类名的加载问题
5星 · 资源好评率100%
当使用ServiceLoader加载同一个jar包时,如果该jar包中的某个服务实现类已经被加载过一次,再次加载时会出现"Error reading configuration file"异常。这是因为ServiceLoader会缓存已经加载的实现类,避免重复加载,但是如果同一个服务实现类被包含在不同的jar包中,就会出现异常。
解决这个问题的方法是手动清除ServiceLoader的缓存,即调用ServiceLoader类的静态方法reload()。具体来说,可以在加载同一个服务之前,先调用ServiceLoader.reload()方法,清除缓存,然后再重新加载。这样就可以避免重复加载同一个服务实现类,并且保证每次加载都是最新的。
阅读全文