Ich habe eine grundlegende Spring-Boot-Anwendung aus SPRING INITIALIZR mit den Abhängigkeiten von Web, MongoDB und JPA erstellt.
Wenn ich versuche, die Spring Boot-Anwendung auszuführen, erhalte ich die folgende Ausnahme:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-03-25 16:27:02.807 ERROR 16256 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following situation:
If you want an embedded database like H2, HSQL or Derby, please add it in the Classpath.
If you have database settings to be loaded from a particular profile you may need to activate it since no profiles were currently active.
In der Datei application.properties habe ich folgende Konfiguration:
server.port=8081
spring.data.mongodb.database=TestDatabase
spring.data.mongodb.Host=localhost
spring.data.mongodb.port=27017
Versionen die ich verwende: Spring: 5.0.4, MongoDB: 3.6, Spring Boot: 2.0
Da Sie in Ihre Datei pom.xml sowohl mongodb- als auch data-jpa-Abhängigkeiten hinzugefügt haben, wurde ein Abhängigkeitskonflikt wie folgt erstellt
<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-mongodb</artifactId>
</dependency>
Entfernen Sie die jpa-Abhängigkeit und führen Sie sie aus. Es sollte gut funktionieren.
Wechseln Sie in den Ressourcenordner, in dem sich die Datei application.properties befindet, und aktualisieren Sie den folgenden Code.
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
Fügen Sie die folgende Zeile in application.properties file im Ressourcenordner ein und starten Sie Ihre Anwendung erneut.
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
Anscheinend fehlt der MongoDB-Treiber. Fügen Sie die folgende Abhängigkeit zu pom.xml
hinzu:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
ihre auf Daten basierende Abhängigkeit versucht, die jeweiligen Entitäten zu finden, die noch nicht erstellt wurden, kommentiert die Abhängigkeiten basierend auf Daten und führt die App erneut aus.
<!-- <dependency> -->
<!-- <groupId>org.springframework.boot</groupId> -->
<!-- <artifactId>spring-boot-starter-data-jpa</artifactId> -->
<!-- </dependency> -->
Dieser Fehler trat auf, wenn Sie JPA-Abhängigkeiten in Ihre Spring-Boot-Konfigurationsdatei einfügen, wie in Maven oder Gradle . Die Lösung ist: Spring-Boot-Dokumentation
Sie müssen die DB-Verbindungszeichenfolge und die Treiberdetails in der Datei application.properties angeben. Dadurch wird das Problem gelöst. Dies könnte jemandem helfen.
Fügen Sie Ihre Abhängigkeiten wie mongodb, web, jpa hinzu. Lösche/lösche die Reste.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
In gradle build habe ich einfach:
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-security')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-devtools')
entfernt
**`compile('org.springframework.boot:spring-boot-starter-data-jpa')`**
und es hat für mich funktioniert.
Ich bin auf dieses Problem gestoßen, als ich einfach meine jdbc-URL in application.properties falsch eingegeben habe. Hoffe das hilft jemandem: vorher:
spring.datasource.url=jdbc://localhost:3306/test
nach:
spring.datasource.url=jdbc:mysql://localhost:3306/test