Проблема «Символ не найден» при попытке создания репозиториев во время выполнения - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь сгенерировать несколько репозиториев во время выполнения для данных весны jpa с OpenHFT , чтобы уменьшить шаблон кода. Проблема в том, что при работе с IDEA все идет хорошо, однако, если я запускаю его во внешнем tomcat или просто в командной строке: «mvn spring-boot: run», он не может распознать внешние ресурсы, такие как @Resository и некоторые записанные классы.

Я очень старался найти проблему, но бесполезно, однако я создал минимальную демонстрацию для этой проблемы: github . Я также пытался использовать разные загрузчики классов в качестве параметра для компилятора OpenHFT, такие как .class, Repository.class и Thread.currentThread (). GetContextClassLoader (). Но все равно в конечном итоге по ошибке.

@EventListener
private void initRepositoryMapping(ApplicationReadyEvent event) {
    unMappedWithRepoEntity.add(Department.class);
    unMappedWithRepoEntity.forEach((clazz) -> {
        String className = "com.example.repository.DepartmentRepository";
        String javaCode =
                "\npackage com.example.repository;" +
                "\nimport com.example.entity.Department;" +
                "\nimport org.springframework.stereotype.Repository;" +
                "\nimport java.util.UUID;" +
                "\nimport com.example.repository.BaseRepository;" +
                "\n@Repository" +
                "\npublic interface DepartmentRepository extends BaseRepository<Department, UUID> {}" ;
        logger.info("generating java class : {} code:{}", className, javaCode);
        try {
            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
            logger.info("using classloader: {}", classLoader);
            CompilerUtils.CACHED_COMPILER.loadFromJava(classLoader, className, javaCode);
            System.out.println(Class.forName("com.example.repository.DepartmentRepository"));
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...