SpringBoot 项目与 Intellij 一起使用,但不在 docker 容器中

问题描述 投票:0回答:1

(我正在使用 Kotlin)我有一个 SpringBoot 项目,当我使用 Intellij Idea 启动它时,它运行得非常好。但我需要让它与 Docker 一起运行,当编译时我收到这种类型的错误:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'plantController' defined in URL [jar:file:/app/build/libs/Back-end-0.0.1-SNAPSHOT-fat.jar!/fr/arosaje/controller/PlantController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'plantService' defined in URL [jar:file:/app/build/libs/Back-end-0.0.1-SNAPSHOT-fat.jar!/fr/arosaje/service/PlantService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'plantRepository' defined in fr.arosaje.repository.PlantRepository defined in @EnableJpaRepositories declared on Main: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager'
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798)
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1355)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1192)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
backend-1  |    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975)
backend-1  |    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)
backend-1  |    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
backend-1  |    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
backend-1  |    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
backend-1  |    at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
backend-1  |    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
backend-1  |    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
backend-1  |    at fr.arosaje.MainKt.main(Main.kt:17)
backend-1  | Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'plantService' defined in URL [jar:file:/app/build/libs/Back-end-0.0.1-SNAPSHOT-fat.jar!/fr/arosaje/service/PlantService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'plantRepository' defined in fr.arosaje.repository.PlantRepository defined in @EnableJpaRepositories declared on Main: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager'
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798)
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1355)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1192)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
backend-1  |    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
backend-1  |    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443)
backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:907)
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:785)
backend-1  |    ... 18 common frames omitted
backend-1  | Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'plantRepository' defined in fr.arosaje.repository.PlantRepository defined in @EnableJpaRepositories declared on Main: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager'
backend-1  |    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:377)
backend-1  |    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:135)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1685)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1434)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
backend-1  |    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
backend-1  |    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443)
backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353)
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:907)
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:785)
backend-1  |    ... 32 common frames omitted
backend-1  | Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaSharedEM_entityManagerFactory': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument
backend-1  |    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:377)
backend-1  |    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:135)
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:685)
backend-1  |    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:509)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1335)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1165)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562)
backend-1  |    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
backend-1  |    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
backend-1  |    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:365)
backend-1  |    ... 46 common frames omitted
backend-1  | Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
backend-1  |    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:895)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1319)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
backend-1  |    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
backend-1  |    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:365)
backend-1  |    ... 58 common frames omitted

这是我的 docker-compose 和 run.sh:

version: '3'
services:
  backend:
    image: openjdk:19-alpine
    volumes:
      - ./Back-end:/app
    working_dir: /app
    command: sh ./run.sh
    ports:
      - "8080:8080"
    depends_on:
      - sqlite
    environment:
      - SPRING_DATASOURCE_URL=jdbc:sqlite:sqlite/db

  sqlite:
    image: alpine:latest
    volumes:
      - ./sqlite:/sqlite
    command: sh -c "apk --no-cache add sqlite && touch /sqlite/db && sqlite3 /sqlite/db && tail -f /dev/null"
    container_name: sqlite
#!/bin/sh
apk update && apk add findutils
./gradlew clean build
java -jar $(ls -1 build/libs/*.jar | head -n 1)

我尝试将 jdk 版本从 17 更改为 19,因为我的映像是 17,而我的项目运行在 19(没有更改任何内容),而且我找不到其他任何内容

spring-boot kotlin jpa
1个回答
0
投票

尝试在本地运行 jar

java -jar ${pathToYourJar}

如果运行了,就可以了,你需要添加spring插件来构建fat jar

© www.soinside.com 2019 - 2024. All rights reserved.