HikariPool-1 - jdbcUrl требуется с driverClassName

Я вернулся к программированию своей старой программы https://github.com/JonkiPro/REST-Web-Services. Я обновил Spring Boot с версии 15.6 до версии 2.0.0. Я столкнулся со многими проблемами при компиляции, но не могу с ними справиться. Ну во время компиляции он меня в консоль кидает

2018-03-18 21:54:53.339 ERROR 3220 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig           : HikariPool-1 - jdbcUrl is required with driverClassName.
2018-03-18 21:54:55.392  INFO 3220 --- [ost-startStop-1] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'unit'
2018-03-18 21:54:56.698  INFO 3220 --- [ost-startStop-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'unit'
2018-03-18 21:54:56.778 ERROR 3220 --- [ost-startStop-1] com.zaxxer.hikari.HikariConfig           : HikariPool-1 - jdbcUrl is required with driverClassName.
2018-03-18 21:54:56.782 ERROR 3220 --- [ost-startStop-1] o.s.b.web.embedded.tomcat.TomcatStarter  : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'webSecurityConfig': Unsatisfied dependency expressed through field 'userDetailsService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userDetailsService' defined in file [C:\Users\Jonatan\Documents\GitHub\REST-Web-Services\web\out\production\classes\com\web\web\security\service\impl\UserDetailsServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#65d6e77b' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#65d6e77b': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': Post-processing of FactoryBean's singleton object failed; nested exception is java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
2018-03-18 21:54:56.821  WARN 3220 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat

У меня никогда не было такой ошибки. Я не знаю полностью, что это значит. Мои свойства для базы выглядят так

spring:
  datasource:
    driver-class-name: org.postgresql.Driver
    url: jdbc:postgresql:database
    username: root
    password: root
    schema: classpath:/db/init/schema.sql

Я не знаю, как бороться с этой ошибкой. Программирую довольно давно, но впервые встречаюсь с концепцией hikari. Я использую сервер Tomcat (в Spring Boot) и базу данных PostgreSQL.

Разве ваш URL-адрес не должен выглядеть примерно так: jdbc: postgresql: // host: 5432 / db

Jose Da Silva 18.03.2018 22:11

Нет. jdbc.postgresql.org/documentation/80/connect.html Кроме того, он работал до изменения версии Spring Boot.

rytyrtytr 18.03.2018 22:16

ОК. Одна из возможностей заключается в том, что переменные конфигурации не выбираются.

Jose Da Silva 18.03.2018 22:42

Это не текущая версия программы, но очень похожая на github.com/JonkiPro/REST-Web-Services/blob/master/web/src/ma‌ в /…. У меня есть только эта конфигурация для базы данных. Можно как-нибудь настроить эти хикари? Я никогда об этом не слышал.

rytyrtytr 18.03.2018 22:51

Просто отбросьте свойство driver-class-name. Spring Boot определит класс драйвера только по URL-адресу.

Strelok 19.03.2018 05:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
22
5
44 861
2

Ответы 2

У меня была такая же проблема в другом контексте. С 79. Доступ к данным - настройка настраиваемого источника данных.

if you happen to have Hikari on the classpath, this basic setup does not work, because Hikari has no url property (but does have a jdbcUrl property)

Hikari - это пул по умолчанию в Spring Boot 2.

так что вы можете заменить конфиг url: jdbc:postgresql:database -> jdbc-url: jdbc:postgresql:database

или вы можете сохранить конфигурацию, но вам нужно определить другой Bean для обработки сопоставления (псевдонимы)

@Bean
@Primary
@ConfigurationProperties("app.datasource")
public DataSourceProperties dataSourceProperties() {
    return new DataSourceProperties();
}

@Bean
@ConfigurationProperties("app.datasource")
public DataSource dataSource(DataSourceProperties properties) {
    return properties.initializeDataSourceBuilder().
        .build();
}

Решил проблему для меня, у меня есть 2 источника данных, и в моих свойствах я просто заменил, например, app.datasource1.url на app.datasource1.jdbc-url

alvinmeimoun 23.04.2018 19:27

Также вы можете посмотреть здесь, чтобы увидеть другой подход к созданию источника данных: baeldung.com/hikaricp#1-creating-a-datasource

eventhorizon 29.03.2021 17:21

Удалите свойство spring.datasource.driver-class-name или переименуйте свойство spring.datasource.url в spring.datasource.jdbc-url.

Об этом сообщается в вашей ошибке:

java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName

Первый вариант выглядит более чистым, и Spring Boot определит имя класса драйвера по умолчанию на основе значения свойства spring.datasource.url (см. Класс org.springframework.boot.jdbc.DatabaseDriver, если вы хотите отладить это).

Другие вопросы по теме