#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, нужная мне библиотека по какой-либо причине представляет собой файловую папку, в то время как все остальные библиотеки — это банки, как я и ожидал. Есть идеи, что это может означать?