web-dev-qa-db-fra.com

Impossible de configurer automatiquement une source de données: 'spring.datasource.url'

Je suis vraiment nouveau au printemps, en particulier à Spring Boot. Je vous en prie, soyez le plus explicite possible, donnez-moi la documentation à lire pour que je puisse très bien comprendre ce que je dois faire.

Mon projet utilise les frameworks/technologies MySQL + JavaFX + Spring Boot + Spring Data JPA + Hibernate.

Ceci est mon fichier POM.

<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.nubeclick</groupId>
<artifactId>pos</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>POSNubeClick</name>
<description>Sistema de punto de venta (Point Of Sale).</description>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.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>
    <slf4j.version>1.7.12</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>com.miglayout</groupId>
        <artifactId>miglayout-javafx</artifactId>
        <version>5.0</version>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
    <!-- <dependency> -->
    <!-- <groupId>org.slf4j</groupId> -->
    <!-- <artifactId>slf4j-api</artifactId> -->
    <!-- <version>${slf4j.version}</version> -->
    <!-- </dependency> -->
    <!-- <dependency> -->
    <!-- <groupId>org.slf4j</groupId> -->
    <!-- <artifactId>jcl-over-slf4j</artifactId> -->
    <!-- <version>${slf4j.version}</version> -->
    <!-- </dependency> -->
    <!-- <dependency> -->
    <!-- <groupId>org.slf4j</groupId> -->
    <!-- <artifactId>slf4j-log4j12</artifactId> -->
    <!-- <version>${slf4j.version}</version> -->
    <!-- </dependency> -->
    <!-- <dependency> -->
    <!-- <groupId>log4j</groupId> -->
    <!-- <artifactId>log4j</artifactId> -->
    <!-- <version>${log4j.version}</version> -->
    <!-- </dependency> -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-Java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.jfoenix</groupId>
        <artifactId>jfoenix</artifactId>
        <version>1.10.0</version>
    </dependency>
    <dependency>
        <groupId>de.jensd</groupId>
        <artifactId>fontawesomefx</artifactId>
        <version>8.9</version>
    </dependency>
    <dependency>
        <groupId>org.controlsfx</groupId>
        <artifactId>controlsfx</artifactId>
        <version>8.40.13</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Ceci est ma configuration .properties.

spring.main.banner-mode=off

# Datasource connection properties
spring.datasource.url=jdbc:mysql://localhost/posnubeclick
spring.datasource.username=nubeclick
spring.datasource.password=nubeclick
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# JPA Properties
spring.jpa.database=posnubeclick

# Hibernate Configuration Properties
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.properties.hibernate.current_session_context_class=thread
spring.jpa.properties.hibernate.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

# Naming strategy
spring.jpa.hibernate.naming-strategy =org.hibernate.cfg.ImprovedNamingStrategy

#Turn Statistics on
spring.jpa.properties.hibernate.generate_statistics=true

# logging
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
logging.level.org.hibernate.stat=debug
logging.level.org.hibernate.type=trace
logging.level.org.hibernate.SQL=debug
#logging.level.org.hibernate.type.descriptor.sql=trace
logging.level.=error

C'est ma classe principale

@SpringBootApplication(scanBasePackages = { "com.nubeclick.pos" })
public class MainApp extends Application {

private static final Logger log = LoggerFactory.getLogger(MainApp.class);

public static void main(String[] args) throws Exception {

    SpringApplication.run(MainApp.class, args);
    // launch(args);
}

@Override
public void start(Stage stage) throws Exception {
    try {
        log.info("Starting Hello JavaFX and Maven demonstration application");

        String fxmlFile = "/fxml/Main.fxml";
        log.debug("Loading FXML for main view from: {}", fxmlFile);
        FXMLLoader loader = new FXMLLoader();
    Parent rootNode = (Parent) loader.load(getClass().getResourceAsStream(fxmlFile));

        log.debug("Showing JFX scene");
        Scene scene = new Scene(rootNode);
        scene.getStylesheets().add("/styles/styles.css");
        stage.setTitle("NubeClick - Point of Sales");
        stage.setScene(scene);
        stage.show();
    } catch (Exception e) {
    // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

C'est le stacktrace: 

Exception rencontrée lors de l'initialisation du contexte - annulation de la tentative d'actualisation: org.springframework.beans.factory.UnsatisfiedDependencyException: Erreur lors de la création du bean nommé 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration': Dépendance exprimée par la propriété non satisfaite via le paramètre constructor 0; L'exception imbriquée est org.springframework.beans.factory.BeanCreationException: erreur lors de la création du bean avec le nom 'dataSource' défini dans la ressource de chemin de classe [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration $ Hikari.class]: échec de la fabrique Bean ; L'exception imbriquée est org.springframework.beans.BeanInstantiationException: échec de l'instanciation [com.zaxxer.hikari.HikariDataSource]: La méthode d'usine 'dataSource' a renvoyé une exception; exception imbriquée est org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException: Impossible de déterminer une classe de pilote appropriée

Le message du printemps est le suivant: 

La description:

Échec de la configuration automatique d'une source de données: 'spring.datasource.url' n'est pas spécifié et aucune source de données intégrée n'a pu être configurée automatiquement.

Raison: Impossible de déterminer une classe de conducteur appropriée

Action:

Considérer ce qui suit: Si vous voulez une base de données intégrée (H2, HSQL ou Derby), merci de la mettre sur le classpath.

Si vous devez charger les paramètres de base de données à partir d'un profil particulier, vous devrez peut-être l'activer (aucun profil n'est actuellement actif).

Je me suis référé à ceci autre message et ceci autre

Je ne sais pas quoi faire, peut-être tout recommencer à zéro, mais je veux adapter ces cadres à mon projet actuel.

Que puis-je faire pour résoudre ce problème?

Modifier


Ce qui est fou, j’ai décidé de télécharger le projet dans un autre référentiel, de nettoyer intégralement le dossier du projet (.project supprimé, .settings, .classpath, bin, target) et de réimporter le projet dans Eclipse, de configurer -> ajouter maven nature, et maintenant l'erreur est partie, au moins cette erreur, d'autres erreurs mais maintenant tout est chargé à partir du fichier de propriétés, alors pourquoi est-ce arrivé?

5
Adrian Flores

J'ai décidé de télécharger le projet dans un autre référentiel, j'ai entièrement nettoyé le dossier du projet (.project, .settings, .classpath, bin, cible supprimés) et le projet réimporté dans Eclipse, a configuré -> ajouter la nature maven erreur est partie, au moins cette erreur, quelques autres erreurs, mais maintenant tout est chargé à partir du fichier de propriétés, alors pourquoi est-ce arrivé?

0
Adrian Flores

Peut-être que Spring Boot ne localise pas du tout votre fichier application.properties. Assurez-vous que ce fichier se trouve à la racine du dossier resources (dans une configuration de projet Maven typique, il devrait être situé dans la racine du dossier src/main/resources). 

Je vous suggère d'activer le niveau de journalisation DEBUG pour vérifier si Spring Boot lit le fichier application.properties correct.

4
Riccardo Righi

Voici ce que je ferais si nous étions assis l'un à côté de l'autre, commentez quelques lignes:

# Datasource connection properties
spring.datasource.url=jdbc:mysql://localhost/posnubeclick
spring.datasource.username=nubeclick
spring.datasource.password=nubeclick
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# JPA Properties
#spring.jpa.database=posnubeclick

Votre fichier .properties est-il également appelé application.properties OR bootstrap.properties?

0
DaShaun

Assurez-vous que vous avez une dépendance mysql dans votre fichier pom.xml ou build.gradle:

compile 'mysql:mysql-connector-Java'

ou

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
</dependency>

Ensuite, vous pouvez commenter votre propriété driver-class-name, car spring boot la configurera automatiquement pour vous.

Une dernière chose: il semble que vous deviez vous connecter au port concret de mysql (par défaut, il s’agit de 3306), assurez-vous donc que cela ressemble à ceci:

spring.datasource.url=jdbc:mysql://localhost:3306/posnubeclick
0
mkuligowski