当前位置: 首页 > 知识库问答 >
问题:

类加载器错误-加载器组织的未命名模块。springframework。靴子开发工具。重新启动。类加载器。重新启动ClassLoader

冯奇思
2023-03-14

作为一个整体,我对Spring和Java非常陌生,目前正在开发一个API。我有一段代码,它访问MSSQL数据库,检索结果,并将其可视化,但它不起作用。我的意思是,如果我只调用过程并可视化结果集,它就会正常工作。问题是我无法处理“RatingProcedure”对象。当我尝试获取某个对象的值时,会显示以下错误:

Hibernate:{调用dis_entity.spdcmpracovnici(?,,,?)}2019-09-02 01:56:01.355警告8720---[nio-8050-exec-3]。m、 m.a.ExceptionHandlerExceptionResolver:Resolved[java.lang.ClassCastException:class[Ljava.lang.Object;无法强制转换到class com.pproi.dcm.ratingprocedure.ratingprocedure([Ljava.lang.Object;位于加载程序“引导”的模块java.base中);

守则:

@GetMapping("/replacements/{sourceId}/workers")
    public ResponseEntity<List<PossibleReplacementResponseModel>> getReplacements(@PathVariable Integer sourceId,
            @RequestParam(required = false) Integer targetWorkerId,
            @RequestParam(required = false) Integer targetLineId,
            @RequestParam(required = false) String targetWorkplaces) {

        List<PossibleReplacementResponseModel> response = new ArrayList<>();

        // 400 Bad Request
        if ((targetLineId != null && targetWorkerId != null) || (targetWorkplaces != null && targetLineId == null))
            return ResponseEntity.badRequest().build();

        StoredProcedureQuery ratingProcedure = entityManager.createNamedStoredProcedureQuery("dcmrating");

        StoredProcedureQuery storedProcedure = ratingProcedure.setParameter("pk_target_worker", targetWorkerId)
                .setParameter("pk_target_sdl", targetLineId).setParameter("pk_target_workplaces", targetWorkplaces)
                .setParameter("pk_source_sdl", sourceId);

        List<RatingProcedure> ratings = storedProcedure.getResultList();

        for(RatingProcedure rating : ratings) {
            PossibleReplacementResponseModel responseModel = new PossibleReplacementResponseModel();
            Optional<Worker> _worker = workerRepository.findById(rating.getPersonalId());

            if(_worker.isPresent()) {
                Worker worker = _worker.get();
                responseModel.setId(worker.getId());
                responseModel.setName(worker.getFullName());
                responseModel.setSkills(findWorkersSkills(worker));
                responseModel.setPhysicalExamination(findWorkersMedicalExaminationEndDate(worker));
                responseModel.setExams(findWorkersExams(worker));
                responseModel.setRestrictions(findWorkersRestrictions(worker));
                responseModel.setRating(rating.getRating());
            }
            response.add(responseModel);
        }

        return ResponseEntity.ok(response);
    }

我甚至可能对解决方案有了想法!我可能应该自定义我的重启类加载器,如图所示,但我的技能到此为止,我不知道应该在文件中指定什么。

有什么想法吗?

非常感谢。

共有3个答案

陈畅
2023-03-14

也许这里发生的是:正在为基类创建引用,然后为继承的类进行转换。

让我举个例子。假设我们有一个名为“BaseClass”的基类,一个名为“ChildClass”的类正在扩展“BaseClass”。

BaseClass bClass = new BaseClass(); // NOTICE HERE -> new BaseClass();


// Somewhere in next code lines
ChildClass childClass = (ChildClass) bClass;

这将抛出您提到的错误。

这样做:

BaseClass bClass = new ChildClass(); // NOTICE HERE -> new ChildClass();


// Somewhere in next code lines
ChildClass childClass = (ChildClass) bClass;

我希望这能像解决我的问题一样解决问题

狄阳华
2023-03-14
java.lang.ClassCastException: class <Class_Name> cannot be cast to class <Class_Name> (<Class_Name> is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader <Class_Name> is in unnamed module of loader 'app')

这与spring开发工具包有关。如果不需要,请尝试删除该包。

阎彬炳
2023-03-14

一个简单的解决方法是通过设置系统属性禁用重启:

spring.devtools.restart.enabled = false

例如,当使用spring boot maven插件时,按以下方式启动应用程序:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.devtools.restart.enabled=false"
 类似资料:
  • 我有这个问题,想通过NetBeans解决它,我仍然不知道如何从提示符中使用maven,我找到了一个解决方案,但它是从提示符中找到的,有人知道怎么做吗?谢谢 原因:java.lang.ClassCast异常:类java.util.无法将$list12强制转换为类br.edu.iff.projetoEstoque.model.FuncionarioResp(java.util.ImMutableCol

  • 20.2.5 定制重启类加载器 如上面的重启vs重载部分所述,重启功能是通过使用两个类加载器来实现的。对于大多数应用程序来说,这种方法运行良好,但有时会导致类加载问题。 默认情况下,IDE中打开的任何项目都将使用“重启”类加载器加载,而任何常规的.jar文件将使用“基本”类加载器加载。如果您工作在多模块项目中,而不是将每个模块都导入IDE,那么那你可能需要自己进行一些设置。要做到这一点,你可以创建

  • 我是OSGi概念的新手,对于下面的错误,我非常感谢您的帮助。 当运行独立应用程序时没有问题,但是当同一个应用程序放在OSGI包中时,我们得到以下错误。 原因异常java.lang.运行时异常:无法实例化解析器org.apache.xerces.parsers.SAXParser:java.lang.类org.apache.xerces.parsers.SAXParser无法转换为类org.xml.

  • 当用户从用户界面更改配置时,我想动态地重新加载log4j附加器(RollingFileAppender)。 我已经通过编程删除了追加器,并用新的配置值创建了新的追加器。在此之后,appender broked MaxBackupIndex和MaxFileSize无法正常工作。但是如果我更改了文件名(日志文件名),那么它可以正常工作。 能帮我解决这个问题吗?

  • 我刚刚开始使用composer进行依赖关系管理,我很难弄清楚我是如何不遵守psr-4进行自动加载的,所以我来这里寻求建议。我有一个生成随机值的类,它已经在packagist上了。项目结构如下(我已将composer.json文件标记为A和B): 项目总监 composer.jsonA composer.jsonB 最后是RlandValue.php文件,它声明了ejFrancis命名空间 当我运行

  • 我不熟悉使用composer和psr-0。我尝试了一个使用composer和psr-0的小应用程序。我已经使用名称空间加载了一个特定的类。当我使用composer vendor/autoload调用一个类时,我得到了“未找到类”错误。 我的composer.json文件:/var/www/html/silexapp/composer.json 我的作曲家供应商自动加载文件:/var/www/htm