代码之家  ›  专栏  ›  技术社区  ›  AjFmO

无法自动配置数据源:“spring”。数据源。url'

  •  20
  • AjFmO  · 技术社区  · 6 年前

    我的项目使用MySQL、JavaFX、Spring Boot、Spring Data JP和Hibernate框架/技术。

    这是我的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>
    

    这是我的。属性配置。

    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
    

    这是我的主课

    @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();
        }
    }
    

    这是stacktrace:

    上下文初始化期间遇到异常-取消刷新尝试:org。springframework。豆子。工厂UnsatifiedDependencyException:创建名为“org”的bean时出错。springframework。靴子自动配置。orm。jpa。HibernateJpaConfiguration“:通过构造函数参数0表示的未满足的依赖关系;嵌套异常为org。springframework。豆子。工厂BeanCreationException:创建名为“dataSource”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]中定义:通过工厂方法实例化bean失败;嵌套异常为org。springframework。豆子。BeanInstationException:未能实例化[com.zaxxer.hikari.HikariDataSource]:工厂方法“dataSource”引发异常;嵌套异常为org。springframework。靴子自动配置。jdbc。DataSourceProperties$DataSourceBeanCreationException:无法确定合适的驱动程序类

    Spring的信息如下:

    说明: 无法自动配置数据源:“spring”。数据源。未指定url“”,无法自动配置嵌入式数据源。 原因:无法确定合适的驱动程序类别 措施: 考虑以下因素: 如果您想要一个嵌入式数据库(H2、HSQL或Derby),请将其放在类路径上。 如果要从特定配置文件加载数据库设置,则可能需要激活它(当前没有激活的配置文件)。

    我提到过这个 other post 还有这个 other one

    我不知道还能做什么,也许从零开始重新开始,但我想让这些框架适应我当前的项目。

    我能做些什么来解决这个问题?

    疯狂的事情是,我决定将项目上载到另一个存储库,对项目文件夹进行了彻底清理(已删除.项目、.设置、.类路径、bin、目标),并将项目重新导入eclipse,进行了配置->添加maven nature,现在错误消失了,至少这个错误,还有一些其他错误,但现在它从属性文件加载所有内容,那么,为什么会发生这种情况?

    如果能链接到文档,我将不胜感激,这样我就能明白我必须做什么。

    4 回复  |  直到 3 年前
        1
  •  11
  •   Riccardo Righi    6 年前

    可能Spring Boot没有找到您的 application.properties 文件。确保此文件位于 资源 文件夹(在典型的Maven项目配置中,它应该位于 src/main/resources 文件夹根目录)。

    我建议您启用调试日志记录级别,以检查Spring Boot是否读取了正确的 应用属性 文件

        2
  •  2
  •   mkuligowski    6 年前

    确保pom中有mysql依赖项。xml或内部版本。gradle文件:

    compile 'mysql:mysql-connector-java'
    

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

    然后你可以把你的 driver-class-name 属性,因为spring boot将为您自动配置它。

    还有一件事:您似乎应该连接到mysql的具体端口(默认为3306),因此请确保它看起来类似于以下内容:

    spring.datasource.url=jdbc:mysql://localhost:3306/posnubeclick
    
        3
  •  0
  •   DaShaun    6 年前

    如果我们坐在一起,我会这样做,评论几句话:

    # 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
    

    也是你的。名为application的属性文件。属性或引导。属性?

        4
  •  0
  •   AjFmO    6 年前

    我决定将项目上载到另一个存储库,对项目文件夹进行了彻底清理(已删除。project、.settings、.classpath、bin、target),并将项目重新导入eclipse,进行了配置->添加maven nature,现在错误消失了,至少这个错误,还有一些其他错误,但现在它从属性文件加载所有内容,那么,为什么会发生这种情况呢?