중첩 예외는 java.dll입니다.잘못된 인수예외:관리되지 않는 유형: 클래스
구축하려고 합니다.Spring-Boot application
와 함께Service
액세스JpaRepository
에 연결되어 있습니다.PostgreSQL DB
런타임에 사용JPA
그리고.Hibernate
연결 속성 참조src/main/resources/application.properties
빌드를 배포할 때.Tomcat에 대한 WAR. 응용 프로그램이 아래 오류 로그에 나와 있는 오류로 시작하지 못하고 있습니다.
누가 이 오류의 의미가 무엇인지 도와줄 수 있습니까?
참고로 다음의 문제 지점을 기록했습니다.MyServiceImpl
그리고.MyRequestBody
Spring 프레임워크가 처음이라 정확한 오류 이유를 알 수 없습니다.
Spring Boot Starter 프로젝트의 관련 클래스 정의는 다음과 같습니다.
스프링 부트 응용 프로그램
@SpringBootApplication
@ComponentScan(<root package name under which all subpackages containing relevant classes >)
public class MySpringBootApplication extends SpringBootServletInitializer {
My Spring-Boot Rest Controller 클래스(MyService 클래스 인스턴스 자동 배선)
@RestController
public class MyController {
@Autowired
MyService myService;
내 서비스 인터페이스(@Service 주석을 제공하지 않음)
public interface MyService {
//all service method definitions
}
Postgre에서 작동할 자동 배선 저장소 인스턴스가 있는 Spring ServiceImppl 클래스SQL DB
@Service("myService")
public class MyServiceImpl implements MyService {
@Autowired
private MyRepository myRepository; <-- **ERROR -- Bean not found**
//other default services e.g. find, add, delete, update, etc.
}
내 리포지토리 클래스
@Repository
public interface MyRepository extends JpaRepository<MyRequestBody, Long> {
@Query("select h from MyRequestBody h where h.column1 = ?1")
List<MyRequestBody> findByColumn1(String col1);
}
내 엔티티 클래스
@Entity
@Table(name = "myTable", schema = "my_db")
public class MyRequestBody { <-- **ERROR -- Not a managed class type**
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(name = "column1")
private String column1;
//getter and setter AND toString methods
오류 로그(배포 시).톰캣에 대한 전쟁)
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-12-28 15:50:23.282 ERROR 5320 --- [ost-startStop-1] o.s.boot.SpringApplication : Application startup failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'MyController': Unsatisfied dependency expressed through field 'myService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'myService': Unsatisfied dependency expressed through field 'myRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.rest.MyRequestBody
@EntityScan("entities_package_name")을 추가한 후
***************************
APPLICATION FAILED TO START
***************************
Description:
Field myRepository in com.rest.MyServiceImpl required a bean of type 'com.rest.MyRepository' that could not be found.
Action:
Consider defining a bean of type 'com.rest.MyRepository' in your configuration.
29-Dec-2017 08:22:25.023 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring-boot-service]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'myController': Unsatisfied dependency expressed through field 'myService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'myService': Unsatisfied dependency expressed through field 'myRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.rest.MyRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:154)
at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:134)
at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:87)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 10 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'myService': Unsatisfied dependency expressed through field 'myRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.rest.MyRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
... 32 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.rest.MyRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
... 45 more
29-Dec-2017 08:22:25.026 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [/home/sunilg/apache-tomcat-8.5.24/webapps/spring-boot-service.war]
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring-boot-service]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:756)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
스프링은 당신의 실체를 알지 못합니다.다음을 표시해야 합니다.MySpringBootApplication
와 같은 부류의.@EntityScan("your.entities.package")
제 경우에는 그것이 없었습니다.@Entity
그리고@Id
엔티티 클래스의 주석입니다.
Repository 클래스와 동일한 Entity 클래스 모듈을 배치해야 합니다. 그렇지 않으면 @EntityScan을 애플리케이션 클래스에 추가해야 합니다.
setPackages를 사용하여 LocalContainerEntityManagerFactoryBean으로 엔티티 클래스 패키지를 구성해야 합니다.ToScan() 메서드입니다.아래의 예를 고려해 보십시오.
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean();
bean.setDataSource(dataSource);
bean.setJpaVendorAdapter(jpaVendorAdapter);
bean.setPackagesToScan("your entity packaged name here");
return bean;
}
예제 오류 "UnsessfulatedDependencyException: 이름이 'appModelController'인 빈을 생성하는 중 오류 발생: 'jpaModelRepository' 필드를 통해 표현된 종속성이 만족스럽지 않습니다."
ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appModelController': Unsatisfied dependency expressed through field 'jpaModelRepository': Error creating bean with name 'jpaModelRepository' defined in com.spring.jpaRestApi.repository.JpaModelRepository defined in @EnableJpaRepositories declared on JpaRestApiApplication: Not a managed type: class com.spring.jpaRestApi.model.JpaModel
환경: Java 17 프로젝트 구조, 봄 3.0.1 자카르타의 주석을 사용합니다(예: jakarta.persistence).javax.persistence 대신 Entity).그리고 자카르타 주석을 달면서 제 프로젝트가 작동하기 시작했습니다.
https://stackoverflow.com/a/74841081/18631124
저도 비슷한 문제에 직면한 적이 있지만, 당신의 코드에 대해서는 잘 모르겠지만 이 오류로 방문하는 다른 사람들을 위해 이 답변을 씁니다.아티팩트 ID와 그룹 ID(작은 오타)의 조합 외에 잘못된 패키지 이름을 지정하여 실수를 하였고 수정 시 문제가 해결되었습니다.
<code>
//if use builder you have to add package to scan
@Primary
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
EntityManagerFactoryBuilder builder
){
return builder
.dataSource(dataSource())
.packages("root path of package")
.persistenceUnit("productenter code here")
.build();
}
</code>
언급URL : https://stackoverflow.com/questions/48019364/nested-exception-is-java-lang-illegalargumentexception-not-a-managed-type-clas
'programing' 카테고리의 다른 글
MySQL Workbench - EER 다이어그램 동기화 방법 (0) | 2023.08.29 |
---|---|
오류: 접두사가 llvm인 ABI의 NDK 도구 체인 폴더에서 도구 체인을 찾을 수 없습니다. (0) | 2023.08.29 |
기본 및 특정 요청 시간 초과 (0) | 2023.08.29 |
Android SQLite에서 Maria로 여러 데이터 동기화DB (0) | 2023.08.29 |
두 SQL Server 데이터베이스를 비교하는 무료 도구는 무엇입니까? (0) | 2023.08.29 |