Spring DriverManagerDataSource не найден

#java #spring #maven #datasource #spring-jdbc

#java #весна #maven #источник данных #spring-jdbc

Вопрос:

У меня есть проект spring, и я хочу создать компонент с классом DriverManagerDataSource. Я огляделся и обнаружил, что у большинства людей с этой проблемой не было spring-jdbc в их pom.xml поэтому я трижды проверил, и у меня действительно есть последняя версия в моем pom.xml .

Мой rest-servlet.xml:

 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
    </bean>
  

Ошибка:

 org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.jdbc.datasource.DriverManagerDataSource] for bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/rest-servlet.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.jdbc.datasource.DriverManagerDataSource
  

Я проверил, находится ли он в разделе «внешние библиотеки» (я использую IntelliJ), и я вижу класс. Также, когда я пытаюсь ввести имя класса, автозаполнение тоже находит его.
Любая помощь или предложения будут оценены

Ответ №1:

Убедитесь, что у вас действительно есть этот класс в artifact, созданный IDEA. Я предполагаю, что это ВОЙНА, поэтому проверьте, что она содержит «spring-jdbc-.jar «. Если нет, проверьте область spring-jdbc зависимости в «pom.xml «. Это должно быть compile .

Комментарии:

1. Спасибо. Я попытался поместить область действия в «compile», и это не сработало (область действия не была определена ранее). Как мне проверить, есть ли он в моей войне?

2. Вы можете проверить свои артефакты в окне структуры проекта и убедиться, что spring-jdbc JAR включен в каталог WEB-INF / lib взорванного артефакта ВОЙНЫ. В конце концов, WAR — это просто несжатый ZIP-файл, поэтому вы можете открыть его с помощью любого программного обеспечения-архиватора. Если артефакт включает spring-jdbc , а фактический файл WAR — нет, попробуйте включить артефакт в сборку проекта и перестроить весь проект.

3. Я попытался включить его, теперь он говорит FileNotFoundException: доступ запрещен

4. ОБНОВЛЕНИЕ: после перестройки проекта теперь он может найти файл, однако он говорит, что не может найти определенные классы в библиотеке jdbc…

5. Я обнаружил, что в WAR, который я открыл с помощью WinRAR, нужная мне библиотека по какой-либо причине представляет собой файловую папку, в то время как все остальные библиотеки — это банки, как я и ожидал. Есть идеи, что это может означать?