ไม่สามารถกำหนดค่าแหล่งข้อมูล: ไม่ได้ระบุแอตทริบิวต์ "url" และไม่สามารถกำหนดค่าแหล่งข้อมูลในตัวได้


131

ฉันกำลังทำงานกับตัวอย่างSpring Boot Batchกับ MongoDB และฉันได้เริ่มmongodเซิร์ฟเวอร์แล้ว

เมื่อฉันเปิดแอปพลิเคชันฉันได้รับข้อผิดพลาดด้านล่าง

คำแนะนำสำหรับปัญหานี้หรือไม่?

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
    If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

application.properties:

# Mongo database URI. Cannot be set with host, port and credentials.
spring.data.mongodb.uri=mongodb://localhost/test 

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-batch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

ฉันได้เริ่มต้นmongodด้วยผลลัพธ์ต่อไปนี้:

C:\Users\pc>mongod
2018-07-07T14:39:39.223+0530 I JOURNAL  [initandlisten] journal dir=C:\data\db\journal
2018-07-07T14:39:39.230+0530 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed
2018-07-07T14:39:39.478+0530 I JOURNAL  [durability] Durability thread started
2018-07-07T14:39:39.589+0530 I CONTROL  [initandlisten] MongoDB starting : pid=11992 port=27017 dbpath=C:\data\db\ 64-bit host=DESKTOP-NQ639DU
2018-07-07T14:39:39.589+0530 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2018-07-07T14:39:39.591+0530 I CONTROL  [initandlisten] db version v3.0.5
2018-07-07T14:39:39.592+0530 I CONTROL  [initandlisten] git version: 8bc4ae20708dbb493cb09338d9e7be6698e4a3a3
2018-07-07T14:39:39.592+0530 I CONTROL  [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
2018-07-07T14:39:39.592+0530 I CONTROL  [initandlisten] allocator: tcmalloc
2018-07-07T14:39:39.593+0530 I CONTROL  [initandlisten] options: {}
2018-07-07T14:39:39.595+0530 I JOURNAL  [journal writer] Journal writer thread started
2018-07-07T14:39:40.485+0530 I NETWORK  [initandlisten] waiting for connections on port 27017
2018-07-07T14:40:39.140+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:51340 #1 (1 connection now open)
2018-07-07T14:40:41.663+0530 I NETWORK  [conn1] end connection 127.0.0.1:51340 (0 connections now open)
2018-07-07T14:45:12.421+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:51578 #2 (1 connection now open)
2018-07-07T14:45:12.870+0530 I NETWORK  [conn2] end connection 127.0.0.1:51578 (0 connections now open)
2018-07-07T14:46:21.734+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:51591 #3 (1 connection now open)
2018-07-07T14:46:22.041+0530 I NETWORK  [conn3] end connection 127.0.0.1:51591 (0 connections now open)
2018-07-07T14:57:47.523+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:52534 #4 (1 connection now open)
2018-07-07T14:57:47.910+0530 I NETWORK  [conn4] end connection 127.0.0.1:52534 (0 connections now open)

ใส่คำอธิบายภาพที่นี่

คำตอบ:


90

ตรวจสอบ application.properties ของคุณ

การเปลี่ยนแปลง

spring.datasource.driverClassName=com.mysql.jdbc.Driver

ถึง

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

ทำงานให้ฉัน config เต็ม:

spring.datasource.url=jdbc:mysql://localhost:3306/db
spring.datasource.username=
spring.datasource.password=   
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = update

1
application.properties ใน intelij ide อยู่ที่ไหน
GhostDede

5
@GhostDede โปรดตรวจสอบใน src / main / resources / application.properties
kayesh parvez

ขอบคุณ! มันช่วยให้ฉันรู้ว่าเกิดอะไรขึ้นกับรหัสของฉัน
นักเป่าแซ็กโซโฟน

70

เพียงแค่เพิ่ม: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) ใช้ได้กับฉัน

ฉันได้รับข้อผิดพลาดเดียวกันกับที่พยายาม@EnableAutoConfiguration(exclude=...)แต่ไม่ได้ผล


ทำงานได้ดีเมื่อฉันรู้ว่าฉันจำเป็นต้องใช้ DataSource ในบางจุด แต่ไม่จำเป็นต้องใช้ทันที
alex

มันใช้งานได้จริง แต่สาเหตุของข้อผิดพลาดนั้นคือการเพิ่มการอ้างอิงฐานข้อมูลไปยัง pom.xml และไม่ได้เพิ่มตัวแปรสำหรับเชื่อมต่อกับ DB // หากต้องการเชื่อมต่อ DB คุณต้องเพิ่มแอตทริบิวต์ใน application.properties ในตำแหน่งที่เหมาะสม
ธนากรเหลืองขจรวิทย์

39

ปัญหาของคุณคือการพึ่งพาชุดสปริงspring-boot-starter-batchที่มีspring-boot-starter-jdbcการพึ่งพา maven แบบสกรรมกริยา

Spring Batch เป็นกรอบสำหรับการสร้างงานแบตช์ขององค์กรที่เชื่อถือได้และทนทานต่อความผิดพลาด รองรับคุณสมบัติมากมายเช่นการรีสตาร์ทแบตช์ที่ล้มเหลวบันทึกสถานะของการดำเนินการแบตช์และอื่น ๆ เพื่อให้บรรลุ Spring Batch ใช้สคีมาฐานข้อมูลเพื่อจัดเก็บสถานะของงานที่ลงทะเบียนแล้วการกำหนดค่าอัตโนมัติจะจัดเตรียมการกำหนดค่าพื้นฐานของแหล่งข้อมูลที่ต้องการอยู่แล้วและเป็นการกำหนดค่านี้ที่ต้องใช้การกำหนดค่าฐานข้อมูลเชิงสัมพันธ์

เพื่อแก้ปัญหานี้คุณต้องมีโปรแกรมควบคุมฐานข้อมูลบางอย่างเช่นmysql, h2ฯลฯ urlการกำหนดค่า

อัปเดต : สำหรับการเริ่มต้นคุณสามารถกำหนดค่า application.yml ของคุณได้ดังนี้:

spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:localhost;DB_CLOSE_ON_EXIT=FALSE
    username: admin
    password:

และแน่นอนในการpom.xmlรวม h2 dirver ของคุณเช่นนี้:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
       ....
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

....
    </dependencies>
...

</project>

แรงจูงใจเนื่องจากคุณไม่สามารถใช้ mongo เพื่อจุดประสงค์นี้คือการใช้ mongo มีไว้สำหรับผู้อ่านและนักเขียนรายการเท่านั้นไม่ใช่สำหรับการจัดการฐานข้อมูลภายในของ Spring Batch ที่เป็นสคีมาภายในไม่ใช่สคีมาธุรกิจ แบบสอบถามเป็นแบบสอบถาม SQL ธรรมดาและสิ่งที่เป็นนามธรรมภายในอาศัยฐานข้อมูลเชิงสัมพันธ์ จำเป็นต้องมีฐานข้อมูลที่มีความสามารถ ACID เนื่องจากทุกชุดจะอ่านและเขียนงานเป็นส่วน ๆ และบันทึกข้อมูลนั้นเพื่อเริ่มงานใหม่ โซลูชัน NoSql ไม่เหมาะสำหรับสิ่งนี้

ในตอนท้ายคุณได้กำหนดค่าฐานข้อมูลเชิงสัมพันธ์เพื่อเตรียม Spring Batch สำหรับความสามารถภายในสิ่งที่เป็นนามธรรมภายในไม่ได้ขึ้นอยู่กับ mongo บน jdbc เท่านั้น จากนั้นสามารถใช้ mongo ได้ แต่สำหรับด้านธุรกิจของแบทช์ผ่านตัวอ่าน / ตัวเขียน

ฉันหวังว่าสิ่งนี้จะช่วยให้คุณคลายข้อสงสัยได้


นี่คือคำถามของฉัน - เรายังต้องใช้ H2 ถ้าใช้ MongoDB หรือไม่? ผมใช้ H2 แต่ปัญหายังเหมือนเดิม !!
Jeff Cook

ฉันอัปเดตคำตอบ ฉันลองเริ่มต้นง่ายๆและด้วยการกำหนดค่านี้มันใช้งานได้ ฉันสามารถเริ่มแอปพลิเคชันของฉันได้
Valerio Vaudi

10
คุณสามารถแยก spring-jdbc จากการพึ่งพาชุดสปริงของคุณหรือในคลาสแอปพลิเคชันไม่รวมการโหลดบีนแหล่งข้อมูล@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
TecHunter

เสียเวลาและไร้เหตุผลในการติดตั้ง h2 ในโครงการ mongo วิธีนี้ใช้ได้ผลสำหรับฉัน .. @ValerioVaudi ขอบคุณสำหรับความชัดเจน
Arun3x3

27

ไม่ใช่ประเด็นของคำถาม (อาจเกี่ยวข้องกันก็ได้) แต่ถ้าคุณบูตโปรเจ็กต์ใหม่และสงสัยว่าทำไมคุณถึงได้รับข้อผิดพลาดเดียวกันอาจมาจากส่วนartifactIdของspring-boot-starter-data-jpaการพึ่งพา ฉันให้การพึ่งพาด้านล่าง คุณจะต้องกำหนดฐานข้อมูลเพื่อกำจัดสิ่งนี้

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

5
ในกรณีของฉันมันเป็นการพึ่งพา spring-boot-starter-data-jdbc ที่ฉันแสดงความคิดเห็นใน pom.xml และปัญหาก็หายไป! ฉันเดาว่าจะเป็นการดีที่จะรวมการอ้างอิงเหล่านี้เฉพาะในกรณีที่คุณมีไดรเวอร์และข้อมูลประจำตัวอื่น ๆ ที่พร้อมซึ่งสามารถอัปเดตใน application.properties เพื่อให้โครงการสร้างได้สำเร็จ
raikumardipak

ฉันพบปัญหาที่คล้ายกันซึ่งอธิบายไว้ที่นี่ ฉันกำลังเล่นกับ JPA แทนที่จะใช้ Mongo โดยตรงดังนั้นฉันจึงเพิ่มการพึ่งพาด้านบน (ผ่าน Intellij) ฉันตัดสินใจที่ฉันไม่ได้รักวิธี JPA ดังนั้นฉันแสดงความคิดเห็นมันออกมาจากpom.xml นั่นคือตอนที่ฉันต้องเริ่มรับข้อผิดพลาดที่ระบุไว้ในคำถามด้านบน ฉันต้องการเรียกใช้mvn clean installแล้วโหลดโครงการ Maven ทั้งหมดจาก Intellij ใหม่เพื่อกำจัดข้อผิดพลาด
Mike

14

ไม่รวมDataSourceAutoConfiguration.classงานสำหรับฉัน:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })

ทางออกที่ดีที่สุดสำหรับแอปพลิเคชันที่ไม่ใช่ฐานข้อมูล
Doogle

10

ลิงค์นี้ช่วยได้

การกำหนดค่าอัตโนมัติ Spring Boot พยายามกำหนดค่า bean โดยอัตโนมัติตามการอ้างอิงที่เพิ่มลงใน classpath และเนื่องจากเรามีการพึ่งพา JPA (spring-data-starter-jpa) บน classpath ของเราจึงพยายามกำหนดค่า

ปัญหา: Spring boot ไม่มีข้อมูลทั้งหมดที่จำเป็นในการกำหนดค่าแหล่งข้อมูล JPA เช่นคุณสมบัติการเชื่อมต่อ JDBC แนวทางแก้ไข:

  1. ระบุคุณสมบัติการเชื่อมต่อ JDBC (ดีที่สุด)
  2. เลื่อนการจัดหาคุณสมบัติการเชื่อมต่อโดยยกเว้นคลาส AutoConfig บางคลาส (ชั่วคราว - ควรถูกลบออกในที่สุด)

ลิงก์ด้านบนไม่รวมDataSourceAutoConfiguration.classกับ

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

แต่สิ่งนี้ไม่ได้ผลสำหรับฉัน ฉันต้องยกเว้น 2 คลาส AutoConfig แทน:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, XADataSourceAutoConfiguration.class})

ทำงานให้ฉัน แต่ฉันก็ยังไม่เข้าใจว่าทำไมฉันต้องยกเว้นอย่างชัดเจน
Saurabh Verma

เฮ้ @SaurabhVerma ฉันได้แก้ไขคำตอบเพื่ออธิบายเหตุผลของการยกเว้นAutoConfigชั้นเรียน
bibangamba

ยกเว้นเพียงDataSourceAutoConfigurationทำงานสำหรับฉันในของ2.2.1.RELEASE spring-boot-starter-parent
user2918640

7

ข้อผิดพลาด "ไม่สามารถกำหนดค่าแหล่งข้อมูล" ขั้นแรกเราแก้ไขปัญหาโดยการกำหนดแหล่งข้อมูล ต่อไปเราจะพูดถึงวิธีการแก้ไขปัญหาโดยไม่ต้องกำหนดค่าแหล่งข้อมูลเลย

https://www.baeldung.com/spring-boot-failed-to-configure-data-source


คุณช่วยขยายคำตอบนี้ได้ไหม
Sterling Archer

1
ฉันอยากจะอธิบายคำตอบที่นี่
CA Arefe

หากใช้วิธีอื่นในการกำหนดค่าการเชื่อมต่อข้อมูลให้ใช้การยกเว้นต่อไปนี้ใน application.properties: spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
Anurag

4

อาจเป็นไปได้ว่าไดเร็กทอรีรีซอร์สของคุณไม่ได้ถูกเพิ่มลงใน classpath เมื่อสร้างโปรเจ็กต์ผ่าน Spring Initializr ดังนั้นแอปพลิเคชันของคุณจะไม่โหลดไฟล์ application.properties ที่คุณกำหนดค่าไว้

หากต้องการทดสอบอย่างรวดเร็วว่าเป็นกรณีนี้หรือไม่ให้เพิ่มสิ่งต่อไปนี้ในไฟล์ application.properties ของคุณ:

server.port=8081

ตอนนี้เมื่อเรียกใช้แอปพลิเคชันของคุณคุณควรเห็นในสปริงบูตคอนโซลผลลัพธ์ดังนี้:

INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): **8081** (http) with context path ''

หากพอร์ตของคุณยังคงเป็น 8080 ดีฟอลต์และไม่เปลี่ยนเป็น 8081 แสดงว่าไฟล์ application.properties ของคุณไม่โหลดอย่างเห็นได้ชัด

คุณยังสามารถตรวจสอบว่าแอปพลิเคชันของคุณทำงานโดยใช้gradle bootRunบรรทัดคำสั่งหรือไม่ ซึ่งส่วนใหญ่จะเป็นงาน

วิธีการแก้:

  1. ปิด IntelliJ จากนั้นภายในโฟลเดอร์โครงการของคุณให้ลบโฟลเดอร์ ".idea"
  2. นำเข้าโครงการของคุณไปยัง IntelliJ อีกครั้งดังต่อไปนี้: "นำเข้าโครงการ" -> "เลือกเฉพาะไฟล์ build.gradle ของคุณที่จะนำเข้า" (IntelliJ จะคว้าส่วนที่เหลือโดยอัตโนมัติ)
  3. สร้างและเรียกใช้แอปพลิเคชันของคุณอีกครั้ง

ดูคำตอบอย่างเป็นทางการโดย IntelliJ Support: IDEA-221673


สำหรับฉันการคลิกขวาที่โฟลเดอร์ Resources ก็เพียงพอแล้วและเลือก "Mark directory as" -> "Resources Root"
Balazs F.

4

สาเหตุที่แท้จริง

JPA (Java persistence API) เป็นข้อกำหนดจาวาสำหรับเครื่องมือ ORM (Object-Relational Mapping) การพึ่งพา spring-boot-starter-data-jpa เปิดใช้งาน ORM ในบริบทของกรอบงานสปริงบูต

คุณลักษณะการกำหนดค่าอัตโนมัติ JPA ของแอ็พพลิเคชัน spring boot พยายามสร้างการเชื่อมต่อฐานข้อมูลโดยใช้ JPA Datasource JPA DataSource bean ต้องการไดรเวอร์ฐานข้อมูลเพื่อเชื่อมต่อกับฐานข้อมูล

ไดรเวอร์ฐานข้อมูลควรพร้อมใช้งานโดยอ้างอิงในไฟล์ pom.xml สำหรับฐานข้อมูลภายนอกเช่น Oracle, SQL Server, MySql, DB2, Postgres, MongoDB และอื่น ๆ ต้องการคุณสมบัติการเชื่อมต่อฐานข้อมูล JDBC เพื่อสร้างการเชื่อมต่อ

คุณต้องกำหนดค่าไดรเวอร์ฐานข้อมูลและคุณสมบัติการเชื่อมต่อ JDBC เพื่อแก้ไขข้อยกเว้นนี้ล้มเหลวในการกำหนดค่าแหล่งข้อมูล: ไม่ได้ระบุแอตทริบิวต์ "url" และไม่สามารถกำหนดค่าแหล่งข้อมูลในตัวได้ เหตุผล: ไม่สามารถกำหนดคลาสไดรเวอร์ที่เหมาะสมได้

application.properties

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 

application.yaml

spring:
autoconfigure:
    exclude:org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

โดยการเขียนโปรแกรม

@SpringBootApplication(exclude =  {DataSourceAutoConfiguration.class })

3

สำหรับรุ่นสปริงบูต2.X.Xด้านล่างการกำหนดค่าใช้ได้สำหรับฉัน

spring.datasource.url=jdbc:mysql://localhost:3306/rest
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = update 

ไดรเวอร์ jdbc เก่าเลิกใช้งานแล้ว ใหม่ถูกกล่าวถึงในการกำหนดค่าข้างต้น โปรดใช้สิ่งเดียวกันและเริ่มโครงการใหม่


2

ฉันได้รับการแก้ไขปัญหาเดียวกันโดยการเพิ่ม <scope>provided</scope>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <scope>provided</scope>
        </dependency>

ที่มา: https://github.com/spring-projects/spring-boot/issues/13796#issuecomment-413313346


2

ฉันได้เพิ่มคำอธิบายประกอบนี้ในคลาสหลักของแอปพลิเคชันสปริงบูตของฉันและทุกอย่างทำงานได้อย่างสมบูรณ์

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })

2

อาจเป็นเพราะคุณมีการพึ่งพา jpa และปลั๊กอิน ...

เพียงแสดงความคิดเห็นหากไม่ใช้ (ไฟล์ build.gradle หรือ pom)

เช่น

// kotlin("plugin.jpa") version "1.3.61"

// implementation("org.springframework.boot:spring-boot-starter-data-jpa")

2

หากคุณใช้ Gradle การสร้าง Gradle ใหม่สามารถแก้ปัญหานี้ได้


ว้าวสิ่งนี้แก้ไขให้ฉันได้ และฉันก็ลืมวิธีแก้ปัญหาไปเรื่อย ๆ
GGrec

1

นั่นหมายความว่าคุณได้ดาวน์โหลดรหัสเริ่มต้นฤดูใบไม้ผลิที่มีการพึ่งพาฐานข้อมูลโดยไม่ต้องกำหนดค่าฐานข้อมูล มันจึงไม่รู้ว่าจะเชื่อมต่ออย่างไร สำหรับเวอร์ชัน Spring boot ให้2.18ทำตามขั้นตอนด้านล่างเพื่อแก้ไข

  1. สร้างฐานข้อมูลสำหรับไดรเวอร์ที่คุณดาวน์โหลดเช่นmysql/mongoฯลฯ
  2. ในapplications.propertiesไฟล์ของคุณให้เพิ่มข้อมูลการเชื่อมต่อฐานข้อมูล ตัวอย่างจะได้รับmysqlถ้าฐานข้อมูลของคุณจะเปลี่ยนมันmongomongo

    spring.datasource.url=jdbc:mysql://localhost:3306/db_name_that_you_created spring.datasource.username=your_db_username_here spring.datasource.password=your_db_pass_here spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto = update

  3. รีบูตเซิร์ฟเวอร์ที่จะทำงาน

1

หากมีการกำหนดแหล่งข้อมูลapplication.resourcesตรวจสอบให้แน่ใจว่าอยู่ด้านล่างsrc/mainและเพิ่มลงในเส้นทางการสร้าง




0

มันเกิดขึ้นเพราะ @ valerio-vaudi กล่าว

ปัญหาของคุณคือการขึ้นต่อกันของ spring-boot-starter-batch spring-boot-starter-batch ที่มีการพึ่งพา maven แบบสปริงบูตสตาร์ท - jdbc

แต่คุณสามารถแก้ไขได้โดยตั้งค่าแหล่งข้อมูลหลักด้วยการกำหนดค่าของคุณ

 @Primary
 @Bean(name = "dataSource")
 @ConfigurationProperties(prefix = "spring.datasource")
 public DataSource getDataSource() {
      return DataSourceBuilder.create().build();
 }

 @Bean
 public JdbcTemplate jdbcTemplate(DataSource dataSource) {
      return new JdbcTemplate(dataSource);
 }

0

ฉันมีปัญหาเดียวกันและลองทำตามคำแนะนำทั้งหมดข้างต้น แต่ไม่ได้ผล ฉันกำลังโพสต์คำตอบสำหรับผู้อ่านที่โกรธแค้น ก่อนที่มันจะทำงานได้ดี แต่มันก็กลับมาอีกครั้ง ฉันแก้ไขปัญหานี้โดยการลบปลั๊กอินและการอ้างอิงที่ไม่จำเป็นออกจาก pom.xml

  1. ก่อนอื่นฉันเปลี่ยนประเภทบรรจุภัณฑ์เริ่มต้นเป็นขวด (Spring Boot Initializer ให้pomในบรรจุภัณฑ์)

    <packaging>jar</packaging>

  2. ฉันเพิ่มปลั๊กอินบางตัวโดยไม่ได้ตั้งใจ:

    <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <attachClasses>true</attachClasses> <webXml>target/web.xml</webXml> <webResources> <resource> <directory>src/main/webapp</directory> <filtering>true</filtering> </resource> </webResources> </configuration> </plugin>

ฉันหวังว่าคำตอบของฉันจะช่วยใครบางคนได้


0

อันนี้ใช้ได้สำหรับฉันสำหรับ MySQL: (คุณสมบัติของแอปพลิเคชัน)

spring.datasource.url=jdbc:mysql://localhost:3306/db?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&
useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=admin
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true


0

หากคุณเพิ่มการพึ่งพา "spring-boot-starter-data-jpa" ใน pom.xml โปรดเพิ่มฐานข้อมูลที่เกี่ยวข้องในการอ้างอิงเช่น h2 และอื่น ๆ


0

ฉันพบข้อผิดพลาดเดียวกันเมื่อเริ่มโครงการใหม่ ใช้บรรทัดคำสั่งได้ผลสำหรับฉัน

./gradlew bootRun

0

หากคุณใช้ YAML สำหรับการกำหนดค่าอาจเป็นปัญหาการเยื้อง ตรวจสอบไฟล์ YAML อย่างละเอียด


-1

ฉันคิดว่าเมื่อนำเข้าโมดูลที่คุณนำเข้าแพ็คเกจอื่นไปที่โมดูลและลบโมดูลเหล่านั้นออก หลังจากนั้นนำเข้าโมดูลจากแพ็คเกจของโครงการ


-1

สำหรับฉันโฟลเดอร์ทรัพยากรได้รับการยกเว้นในการอัปเดต / สร้าง maven ฉันไปที่ Build Path> Source และพบว่า src / main / resources มี "Excluded **" ฉันลบรายการนั้นออก (คลิกที่ยกเว้น **> ลบ> ใช้และปิด)

จากนั้นก็ใช้งานได้ดี

ใส่คำอธิบายภาพที่นี่


-3

การเพิ่มการพึ่งพา h2 ลงในไฟล์ pom สามารถแก้ไขปัญหาดังกล่าวได้ ...... com.h2database h2 ......


ครอบคลุมโดยคำตอบที่มีอยู่
Karl Richter

-8

ในกรณีของฉัน

spring.profiles = production // remove it to fix

ในapplication.propertiesคือเหตุผล


5
ไม่เกี่ยวข้องเจาะจงเกินไป การกำหนดค่าหลักของคุณมัก จำกัด อยู่ที่productionโปรไฟล์ดังนั้นการเปิดใช้งานโปรไฟล์นี้จะช่วยแก้ปัญหาของคุณได้ ปัญหาที่นี่คือการspring.datasourceกำหนดค่าที่ขาดหายไปในการกำหนดค่าที่ใช้งานอยู่
TecHunter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.