클래스 로더 오류 - 로더 org.springframework.boot.devtools.restart.classloader의 명명되지 않은 모듈입니다.클래스 로더 다시 시작
저는 Spring과 Java 전반에 대해 상당히 생소하며 현재 API 작업을 하고 있습니다.MSSQL 데이터베이스에 액세스하여 결과를 검색하고 시각화해야 하는 이 코드를 가지고 있지만 작동하지 않습니다.제 말은, 만약 제가 절차를 호출하고 결과 세트를 시각화한다면, 정상적으로 작동할 것입니다.문제는 "Rating Procedure" 객체를 사용할 수 없다는 것입니다.개체의 값을 가져오려고 하면 다음 오류가 표시됩니다.
최대 절전 모드: {call dis_entity.spdcmpracovnici(?,?,?)} 2019-09-02 01:56:01.355 WARN 8720 --- [nio-8050-exec-3] .m.m.a.ExceptionHandlerExceptionResolver : 해결된 [java.lang.ClassCastException: 클래스 [Ljava.lang]입니다.개체. class com.pproi.dcm. 등급 프로시저에 캐스팅할 수 없습니다.평가 절차([Ljava.lang]).객체;가 로더 'bootstrap'의 모듈 java.base에 있습니다; >com.pproi.dcm.ratingprocedure.RatingProcedure는 loader >org.springframework.boot.devtools.restart.classloader의 명명되지 않은 모듈에 있습니다.ClassLoader 다시 시작 @7193df92)]
코드:
@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);
}
나는 아마도 그 해결책에 대한 아이디어가 있을 거예요!여기에 나와 있는 것처럼 클래스 다시 시작 로더를 사용자 지정해야 하지만, 여기서 기술이 종료되고 파일에 무엇을 지정해야 할지 모르겠습니다.
아이디어 있어요?
감사합니다.
간단한 해결 방법은 시스템 속성을 설정하여 다시 시작을 비활성화하는 것입니다.
spring.devtools.restart.enabled = false
예를 들어 spring-boot maven 플러그인을 사용하는 경우 다음과 같은 방법으로 앱을 시작합니다.
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.devtools.restart.enabled=false"
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')
이것은 스프링 개발 도구 패키지와 관련이 있습니다.필요하지 않은 경우 패키지를 제거해 보십시오.
여기서 일어나는 일은 다음과 같습니다. 기본 클래스에 대한 참조가 생성된 다음 상속된 클래스에 대한 캐스팅이 수행됩니다.
예를 들어 보겠습니다.이름이 "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;
이것이 나의 문제를 해결했기 때문에 나는 이것이 문제를 해결하기를 바랍니다.
persistence.xml을 통해 mysql db에 연결할 때도 같은 문제가 발생했습니다.
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_1_0.xsd"
version="2.2">
<!-- the name="pu" will be used in MainApplicationClass -->
<persistence-unit name="pu1" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/spring_hibernate_jpa_db?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false"/>
<property name="hibernate.connection.username" value="hilal" />
<property name="hibernate.connection.password" value="hilal" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.id.new_generator_mappings" value="true" />
</properties>
</persistence-unit>
</persistence>
내 유일한 해결책은 다음 명령으로 mvn을 시작하는 것입니다.
mvn spring-boot:run -Dspring-boot.run.jvmArguments="Dspring.devtools.restart.enabled=false"
저는 이것을 시도했고 그것은 제 경우에 효과가 있습니다.
mvn dependency:purge-local-repository
이것이 작동할 수 있습니다. 프로젝트에서 springboot dev 도구를 사용하는 경우(pom/gradle) @SpringBootApplication을 사용하는 클래스가 "public"인지 확인하십시오.
@SpringBootApplication
public class MyApp {
public static void main(String ... args) {
SpringApplication.run(MyApp.class,args);
}
}
pom.xml에서 devtools의 종속성을 제거하면 도움이 될 것입니다.
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
-->
당신은 메인 클래스가 되어야 합니다.
public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(MyApp.class, args);
}
언급URL : https://stackoverflow.com/questions/57750294/class-loader-error-unnamed-module-of-loader-org-springframework-boot-devtools
'programing' 카테고리의 다른 글
' 상태를 확인하기 위한 Oracle 빈 상태 (0) | 2023.07.13 |
---|---|
'for' 루프 이니셜라이저에서 포인터를 역참조하면 분할 오류가 생성됩니다. (0) | 2023.07.13 |
Oracle 데이터베이스에 오는 모든 쿼리 표시 (0) | 2023.07.13 |
Firebase 프로젝트의 지원 이메일을 변경하려면 어떻게 해야 합니까? (0) | 2023.07.13 |
라이브러리가 로드되지 않음: @rpath/FBLPromises.framework/FBLP는 iOS 13.3.1을 약속합니다. (0) | 2023.07.13 |