Запуск Spring Boot без базы данных дает сбой

Я пытаюсь настроить проект без базы данных и терпит неудачу со следующей ошибкой:

Caused by: java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseType
at org.springframework.boot.autoconfigure.jdbc.EmbeddedDatabaseConnection.<clinit>(EmbeddedDatabaseConnection.java:49) ~[spring-boot-autoconfigure-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.<init>(DataSourceProperties.java:155) ~[spring-boot-autoconfigure-1.5.10.RELEASE.jar:1.5.10.RELEASE]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_161]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_161]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_161]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_161]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142) ~[spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
... 19 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_161]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_161]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) ~[na:1.8.0_161]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_161]
... 26 common frames omitted

В моем классе SpringBootApplication у меня есть следующая конфигурация:

@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class MySpringBootApplication  {

Это не имеет смысла, потому что это все равно что пытаться читать класс DataSourceProperties в приложении без базы данных.

Я использую Gradle со следующими зависимостями:

compile "io.springfox:springfox-swagger2:${swaggerVersion}",
        "org.springframework.boot:spring-boot-starter-actuator",
        "org.springframework.cloud:spring-cloud-starter-config",
        "org.springframework.boot:spring-boot-starter-web",
      //"org.springframework:spring-jdbc",
        "io.fabric8:spring-cloud-starter-kubernetes:${springCloudKubernetes}",
        "ma.glasnost.orika:orika-core:${orikaVersion}",
        'org.projectlombok:lombok:1.16.20'

testCompile "org.springframework.boot:spring-boot-starter-test",
        'com.github.sbrannen:spring-test-junit5:1.0.2',
        'org.apiguardian:apiguardian-api:1.0.0',

        "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
testRuntime "org.junit.jupiter:junit-jupiter-engine:${junitVersion}",
        "org.junit.platform:junit-platform-launcher:1.0.2"

testAgent("org.jacoco:org.jacoco.agent:${jacocoVersion}:runtime")

Если я добавлю "org.springframework:spring-jdbc", но я не буду иметь смысла добавлять библиотеку базы данных для проекта без базы данных.

Любая идея или подсказка? Заранее спасибо.

2 ответа

Я столкнулся с той же проблемой (используя Spring-Boot 2.0.0.RELEASE): у меня есть Spring-Boot-пакет без базы данных. Он обслуживает только статические файлы.

Чтобы заставить его работать (а не падать при автоконфигурации базы данных), я заменил аннотацию @SpringBootApplication следующими двумя:

@SpringBootConfiguration
@EnableAutoConfiguration

Это позволило запустить сервер без JPA-/JDBC-зависимости и без какого-либо связанного с базой данных свойства конфигурации в файле application.properties.

Просто попробуйте свою общую зависимость, и у меня все выглядит хорошо (приложение запускается без проблем), как и ожидалось, нет необходимости @EnableAutoConfiguration для исключения DataSourceAutoConfiguration, поскольку у вас нет класса DataSource в пути (по крайней мере, с этими зависимостями). Так что я верю

  1. У вас проблемы с обновлением зависимостей в вашей системе /IDE, попробуйте gradle clean build
  2. Например, вы используете неправильные комбинации зависимостей spring-cloud-starter-config 2.0.0.M6 с пружинным чехлом 1.5.x
  3. У вас есть другая зависимость, добавляющая DataSource класс к классу пути.
  4. Вы имеете в своем файле ресурсов свойства конфигурации источника данных сервера ресурсов.
Другие вопросы по тегам