首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动配置DataSource:'spring.datasource.url‘失败

自动配置DataSource:'spring.datasource.url‘失败
EN

Stack Overflow用户
提问于 2018-04-28 18:34:02
回答 4查看 56.9K关注 0票数 20

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

这是我的POM文件。

代码语言:javascript
复制
<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>

这是我的.properties配置。

代码语言:javascript
复制
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

这是我的主修课

代码语言:javascript
复制
@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();
    }
}

这是堆栈跟踪:

上下文初始化过程中遇到的异常--取消刷新尝试: org.springframework.beans.factory.UnsatisfiedDependencyException:错误创建名为'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration':的bean,通过构造器参数0表示不满意的依赖关系;嵌套异常是创建类路径资源中定义的名为“dataSource”的bean时通过工厂方法失败创建Bean的org.springframework.beans.factory.BeanCreationException:错误;嵌套异常是org.springframework.beans.BeanInstantiationException:未能实例化com.zaxxer.hikari.HikariDataSource:工厂方法'dataSource‘抛出的异常;嵌套异常是org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:未能确定合适的驱动程序类。

Spring消息如下:

描述:未能自动配置DataSource:“spring.datasource.url”未指定,也无法自动配置嵌入式数据源。原因:未能确定合适的驱动程序类操作:请考虑以下几点:如果需要嵌入式数据库(H2、HSQL或Derby),请将其放到类路径中。如果要从特定的配置文件加载数据库设置,则可能需要激活它(当前没有活动的配置文件)。

我提到过这个other post和这个other one

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

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

疯狂的是,我决定将项目上传到另一个存储库,将整个项目清理到项目文件夹(已删除的.project、.settings、.classpath、bin、target),并将项目重新导入eclipse,配置->添加了maven特性,现在错误消失了,至少这个错误得到了一些其他错误,但是现在它从属性文件加载了所有的东西,那么,为什么会发生这种情况呢?

链接到文档将不胜感激,这样我就可以理解我必须做什么。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-05-05 21:55:05

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

票数 0
EN

Stack Overflow用户

发布于 2018-04-29 20:06:38

也许Spring根本没有定位您的application.properties文件。确保该文件位于资源文件夹的根目录中(在典型的Maven项目配置中,它应该位于src/main/resources文件夹根中)。

我建议您启用调试日志记录级别,以检查Spring是否读取了正确的application.properties文件。

票数 13
EN

Stack Overflow用户

发布于 2018-04-28 19:32:58

确保您的pom.xml或build.gradle文件中有mysql依赖项:

代码语言:javascript
复制
compile 'mysql:mysql-connector-java'

代码语言:javascript
复制
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

然后您可以注释掉您的driver-class-name属性,因为spring将为您自动配置它。

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

代码语言:javascript
复制
spring.datasource.url=jdbc:mysql://localhost:3306/posnubeclick
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50079841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档