1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ssssssss-team-magic-api

 / Детали:

При использовании /magic/web/classes.txt для получения и загрузки классов через интерфейс не удается получить...

Предстоит сделать
Владелец
Создано  
06.03.2025

динамически загружаемые классы, поэтому методы этих классов не отображаются в интерфейсе. Однако при активной загрузке и использовании таких классов ошибок не возникает.

Укажите используемую версию (обязательно заполните, в противном случае запрос не будет обрабатываться)

org.ssssssss magic-api-spring-boot-starter 2.1.1

Как возникла эта проблема?

В проекте требуется реализовать горячую перезагрузку и внедрение классов или экземпляров. Например, есть утилитный класс TestUtil, который компилируется в JAR-файл и затем может использоваться динамически через интерфейс magic-api. В настоящее время используется URLClassLoader для загрузки этого класса, после чего он внедряется как bean в Spring. Однако из-за проблемы с загрузкой классов, динамически загружаемый класс недоступен. Конкретный код представлен ниже.

// В другом проекте этот утилитный класс собирается в JAR-файл и помещается в указанную директорию, а затем magic-api проект загружает этот JAR
@Component
public class TestUtil {
    public static String action(String msg) {
        return msg;
    }

    public static String action() {
        return "123asd";
    }
}

Ниже приведен процесс динамической загрузки JAR-файла

public class PluginImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar, EnvironmentAware {
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        String path = "file:///C:/Users/keWangCheng/Desktop/xiangMu/classLoaderDemo/jarLib/Util.jar";
        String cls = "org.classloaderdemo.demoutil.util.TestUtil";
        URLClassLoader classLoader = new URLClassLoader(new URL[] { new URL(path) });
        Class<?> clazz = classLoader.loadClass(cls);
        // регистрация bean
        registerBean(clazz, registry);
    }
}

Используется ли неправильный загрузчик классов или требуются какие-либо действия? Прошу указаний.

Шаги воспроизведения (если они есть, укажите их полностью)

Ошибочное сообщение

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/ssssssss-team-magic-api.git
git@api.gitlife.ru:oschina-mirror/ssssssss-team-magic-api.git
oschina-mirror
ssssssss-team-magic-api
ssssssss-team-magic-api