Java Preferences API类加载挑战

时间:2015-05-16 03:54:19

标签: spring-boot classloader

问题:

我在maven jar模块中有一个java.util.prefs的自定义实现。 我将系统属性提供给 -djava.util.prefs.PreferencesFactory = com.blah.CustomePrefsFactory 到我使用自定义首选项的Spring启动应用程序。

当Spring启动应用程序第一次使用Preferences时,Java.util.Preferences.java尝试使用以下命令加载CustomePrefsFactory ClassLoader.getSystemClassLoader()。

这会导致错误,因为嵌套的jar类不适用于spring boot app的系统类加载器。

有没有办法让嵌套的jar类可用于系统类加载器?

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的。

系统ClassLoader委托Bootstrap ClassLoader和Extension ClassLoader,然后尝试从类路径加载类,但不从嵌套的JAR加载。

您必须实施或使用支持该功能的现有ClassLoader