Я создал файл войны весенней загрузки с помощью maven, когда я пытаюсь развернуть файл войны на внешний сервер tomcat в командной строке. У меня исключение.
Ошибка при создании bean-компонента с именем inMemoryDatabaseShutdownExecutor, определенным в ресурсе пути к классам [org / springframework / boot / devtools / autoconfigure / DevToolsDataSourceAutoConfiguration.class]: неудовлетворенная зависимость, выраженная через параметр 0 метода inMemoryDatabaseShutdownExecutor; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'dataSource', определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / jdbc / DataSourceConfiguration $ Hikari.class]: создание экземпляра bean-компонента с помощью фабричного метода завершилось неудачно ; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.zaxxer.hikari.HikariDataSource]: фабричный метод dataSource вызвал исключение; вложенное исключение - java.lang.IllegalStateException: не удается загрузить класс драйвера: oracle.jdbc.OracleDriver
Я использую два файла application.properties: один в src / main / resources, который имеет фактическую конфигурацию источника данных для Oracle, а другой - в src / test / resources, который имеет источник данных для H2 в базе данных памяти.
Пожалуйста, дайте мне знать, если я что-то пропустил, например, размещение файла свойств в config в папке tomcat и т. д.
При запуске приложения со встроенным сервером springboot из eclipse оно работает без ошибок. Только при развертывании войны в Tomcat возникают ошибки (путем размещения файла войны в веб-приложениях в Tomcat).
Проверьте зависимости времени выполнения для такого источника данных, как Oracle. Проверьте, не включен ли ваш oracle jar в каталог lib tomcat.




Я полагаю, вы установили oracle.jdbc.OracleDriver как имя класса драйвера в своем application.properties в src / main / java, верно? Вы не забыли включить эту зависимость от pom.xml, как показано ниже?
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
Редактировать
Попробуйте добавить это в tomcat context.xml:
<Resource name = "jdbc/mydb" auth = "Container" type = "javax.sql.DataSource"
maxTotal = "100" maxIdle = "30" maxWaitMillis = "10000"
username = "xxx" password = "xxx" driverClassName = "oracle.jdbc.OracleDriver"
url = "jdbc:oracle:thin:@localhost:1521:xe"/>
Я пробовал это, не сработало. Думаю, он не может искать автоконфигурацию DataSourceConfiguration $ Hikari.class
Хорошо, основная причина этого в том, что в моем файле войны нет oracle6 jar - хотя я добавил зависимость в свой pom.xml.
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>6</version>
<scope>system</scope>
<systemPath>${basedir}/lib/ojdbc6.jar</systemPath>
</dependency>
Поэтому я явно добавил банку в свою библиотеку Tomcat, и она сработала.
Я добавил конфигурацию источника данных программным способом, как показано ниже, и она сработала, не знаю, почему ее нельзя было выбрать из application.properties.
@Configuration
public class DatasourceConfig {
@Bean
public DataSource datasource() {
return DataSourceBuilder.create()
.driverClassName("com.mysql.cj.jdbc.Driver")
.url("jdbc:mysql://localhost:3306/test_db")
.username("username")
.password("password")
.build();
}
}
Кредиты на статью Baeldung здесь
проблема здесь в том, что конфигурация считывается, но зависимость не устраняется. Вы можете пересмотреть свой ответ
Это исключение возникает при запуске приложения или тестовых примеров?