我正在编写一个可扩展的应用程序。阅读有关ServiceLoader实用程序类的文档,我无法理解以下句子:  该提供程序必须可以从最初查询定位配置文件的同一类加载程序进行访问;请注意,这不一定是实际从中加载文件的类加载器。谁能告诉我这是什么意思?如何确定用于定位配置文件的类加载器? 最佳答案 谁能告诉我这是什么意思?我认为这是指ClassLoaders可以并且确实执行委派的事实。如果我表演,MyClass.class.getClassLoader().getResource("/services/org/my/Service");查找配置文件,则可能是ClassLoader的MyClass委派给父级ClassLoader,也许是其父级委派,依此类推,因此它不是我查询的ClassLoader()实际上会加载配置文件。在这种情况下,规范指出,无论哪个MyClass.class.getClassLoader()实际找到配置文件,都必须可以从ClassLoader访问其命名的服务类。我在这里采取“无障碍”措施并不排除自己的代表团。实际上,对于遵循更有趣策略的MyClass.class.getClassLoader()实现,这些规定可能比在ClassLoader链中进行简单委派(例如在JavaEE容器中发现)更引人注目。  如何确定用于定位配置文件的类加载器?一般来说,您可能不需要这样做。我建议最好的策略是确保任何给定服务配置文件命名的服务类都可以通过(全部)与配置文件本身相同的ClassLoader访问。例如,将它们放在相同的ClassLoader中应该可以完成此操作。
10-08 13:26