У меня проблемы с потоком Vaadin в настройке OSGi, и, похоже, это связано с тем, как некоторые классы загружаются во внутренние компоненты при использовании шаблонов Polymer. Вот моя проблема с некоторыми деталями https://github.com/vaadin/flow/issues/7377.
В TemplateModelProxyHandler:229ff
следующий код используется для загрузки прокси-класса
Class<?> proxyType = proxyBuilder
// Handle bean methods (and abstract methods for error handling)
.method(method -> isAccessor(method) || method.isAbstract())
.intercept(MethodDelegation.to(proxyHandler))
// Handle internal $stateNode methods
.defineField("$stateNode", StateNode.class)
.method(method -> "$stateNode".equals(method.getName()))
.intercept(FieldAccessor.ofField("$stateNode"))
// Handle internal $modelType methods
.defineField("$modelType", BeanModelType.class)
.method(method -> "$modelType".equals(method.getName()))
.intercept(FieldAccessor.ofField("$modelType"))
// Create the class
.name(proxyClassName).make()
.load(classLoader, ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
Здесь два класса Грузчики важны. Во-первых, загрузчик классов OSGi (classLoader
) здесь. Во-вторых, загрузчик классов пакета, который содержит класс TemplateModelProxyHandler
, например TemplateModelProxyHandler.class.getClassLoader()
. Есть ли способ использовать оба загрузчика классов здесь? Есть ли простой способ добиться этого с помощью ByteBuddy?