Я работаю над проектом Spring MVC и хочу создать интерфейс репозитория, расширяющий JpaRepository. Однако я сталкиваюсь с ошибками компиляции, указывающими на отсутствие некоторых файлов JAR или на наличие конфликтов между файлами JAR.
Вот мой интерфейс репозитория:
public interface StudentRepository extends JpaRepository<Student , Long> {
}
Я включил в свой проект следующие файлы JAR:
antlr-2.7.7.jar
aopalliance-1.0.jar
aspectjrt-1.8.0.jar
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.4.Final.jar
hibernate-core-4.3.5.Final.jar
hibernate-entitymanager-4.3.5.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
hsqldb-2.3.2.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
javax.servlet-api-3.1.0.jar
javax.servlet.jsp.jstl-1.2.5.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
jcl-over-slf4j-1.7.7.jar
jsp-api-2.1.jar
jstl-api-1.2.jar
serializer-2.7.2.jar
servlet-api-2.5.jar
slf4j-api-1.7.7.jar
spring-aop-4.0.7.RELEASE.jar
spring-beans-4.0.7.RELEASE.jar
spring-context-4.0.7.RELEASE.jar
spring-core-4.0.7.RELEASE.jar
spring-data-commons-1.8.0.RELEASE.jar
spring-data-jpa-1.6.0.RELEASE.jar
spring-expression-4.0.7.RELEASE.jar
spring-jdbc-4.0.7.RELEASE.jar
spring-orm-4.0.7.RELEASE.jar
spring-tx-4.0.7.RELEASE.jar
spring-web-4.0.7.RELEASE.jar
spring-webmvc-4.0.7.RELEASE.jar
xalan-2.7.2.jar
Мой класс репозитория
package dao;
import entity.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface StudentDao extends CrudRepository<Student, Long> {
// methods if any
}
Мой класс контроллера
package controller;
import dao.StudentDao;
import entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller
public class StudentController {
@Autowired
StudentDao studentDao;
@RequestMapping("/student")
public String studentList(Model model) {
List<Student> students = (List<Student>) studentDao.findAll();
model.addAttribute("users", students);
System.out.println("List of students: " + students);
System.out.println("Controller of students");
return "student";
}
}
ApplicationContext.xml находится здесь.
<?xml version='1.0' encoding='UTF-8' ?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:p = "http://www.springframework.org/schema/p"
xmlns:aop = "http://www.springframework.org/schema/aop"
xmlns:jpa = "http://www.springframework.org/schema/data/jpa"
xmlns:tx = "http://www.springframework.org/schema/tx"
xmlns:mvc = "http://www.springframework.org/schema/mvc"
xmlns:context = "http://www.springframework.org/schema/context"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<!-- Load properties from application.properties -->
<bean class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name = "location" value = "/WEB-INF/application.properties" />
</bean>
<context:annotation-config />
<!-- Enable MVC annotations -->
<mvc:annotation-driven />
<!-- Serve static resources -->
<mvc:resources mapping = "/reports/**" location = "/WEB-INF/reports/" />
<mvc:resources mapping = "/images/**" location = "/WEB-INF/images/" />
<mvc:resources location = "/WEB-INF/resources/" mapping = "/resources/**"/>
<!-- Enable transaction management -->
<tx:annotation-driven transaction-manager = "jpaTransactionManager"/>
<!-- Component scan for all relevant packages -->
<context:component-scan base-package = "controller, service, dao, config, dto,entity"/>
<!-- Configure data source -->
<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/springdb" />
<property name = "username" value = "root" />
<property name = "password" value = "root" />
</bean>
<!-- Configure JPA EntityManagerFactory -->
<bean id = "entityManagerFactory" class = "org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name = "dataSource" ref = "dataSource" />
<property name = "packagesToScan" value = "entity.Student" />
<property name = "jpaVendorAdapter">
<bean class = "org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name = "jpaProperties">
<props>
<!-- Set Hibernate dialect -->
<prop key = "hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<!-- Show SQL queries in console for debugging -->
<prop key = "hibernate.show_sql">true</prop>
<!-- Automatically update database schema -->
<prop key = "hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<!-- Configure JPA Transaction Manager -->
<bean id = "jpaTransactionManager" class = "org.springframework.orm.jpa.JpaTransactionManager">
<property name = "entityManagerFactory" ref = "entityManagerFactory" />
</bean>
</beans>
Ошибки в консоли, с которыми я столкнулся
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'studentController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: dao.StudentDao controller.StudentController.studentDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [dao.StudentDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:293)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1186)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
после удаления все еще не работает/устранена ошибка компиляции
показать свой pom.xml и другое сообщение об исключении?
весеннее загрузочное приложение или война веб-приложений?
Я работаю с Spring MVC и не использую Spring Boot, поэтому не использую файл POM.xml. Вместо этого я вручную загрузил необходимые файлы JAR и добавил их в путь к классам моего проекта в Spring MVC.
Я обновляю ответ, использую Spring MVC 4.
hello-tomcat9-web$ tree
.
└── src
└── main
├── java
│ └── com
│ └── example
│ ├── controller
│ │ └── UserController.java
│ ├── model
│ │ └── User.java
│ └── repository
│ └── UserRepository.java
└── webapp
├── META-INF
│ └── MANIFEST.MF
└── WEB-INF
├── lib
│ ├── antlr-2.7.7.jar
│ ├── aopalliance-1.0.jar
│ ├── aspectjrt-1.8.0.jar
│ ├── commons-logging-1.1.3.jar
│ ├── dom4j-1.6.1.jar
│ ├── hibernate-commons-annotations-4.0.4.Final.jar
│ ├── hibernate-core-4.3.5.Final.jar
│ ├── hibernate-entitymanager-4.3.5.Final.jar
│ ├── hibernate-jpa-2.1-api-1.0.0.Final.jar
│ ├── hsqldb-2.3.2.jar
│ ├── jandex-1.1.0.Final.jar
│ ├── javassist-3.18.1-GA.jar
│ ├── javax.servlet-api-3.1.0.jar
│ ├── javax.servlet.jsp.jstl-1.2.5.jar
│ ├── jboss-logging-3.1.3.GA.jar
│ ├── jboss-logging-annotations-1.2.0.Beta1.jar
│ ├── jboss-transaction-api_1.2_spec-1.0.0.Final.jar
│ ├── jcl-over-slf4j-1.7.7.jar
│ ├── jsp-api-2.1.jar
│ ├── jstl-api-1.2.jar
│ ├── serializer-2.7.2.jar
│ ├── servlet-api-2.5.jar
│ ├── slf4j-api-1.7.7.jar
│ ├── spring-aop-4.0.7.RELEASE.jar
│ ├── spring-beans-4.0.7.RELEASE.jar
│ ├── spring-context-4.0.7.RELEASE.jar
│ ├── spring-core-4.0.7.RELEASE.jar
│ ├── spring-data-commons-1.8.0.RELEASE.jar
│ ├── spring-data-jpa-1.6.0.RELEASE.jar
│ ├── spring-expression-4.0.7.RELEASE.jar
│ ├── spring-jdbc-4.0.7.RELEASE.jar
│ ├── spring-orm-4.0.7.RELEASE.jar
│ ├── spring-tx-4.0.7.RELEASE.jar
│ ├── spring-web-4.0.7.RELEASE.jar
│ ├── spring-webmvc-4.0.7.RELEASE.jar
│ ├── xalan-2.7.2.jar
│ └── xml-apis-1.0.b2.jar
├── spring
│ ├── application-context.xml
│ └── dispatcher-config.xml
├── views
│ └── index.jsp
└── web.xml
package com.example.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.example.repository;
import org.springframework.data.repository.CrudRepository;
import com.example.model.User;
public interface UserRepository extends CrudRepository<User, Long> {
}
package com.example.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.example.model.User;
import com.example.repository.UserRepository;
@Controller
public class UserController {
@Autowired
private UserRepository userRepository;
@RequestMapping(value = "/",method = RequestMethod.GET)
public String index(Model model) {
model.addAttribute("users", userRepository.findAll());
return "index";
}
@RequestMapping(value = "/add",method = RequestMethod.POST)
public String addUser(@RequestParam String name) {
User user = new User();
user.setName(name);
userRepository.save(user);
return "redirect:/";
}
@RequestMapping(value = "/del",method = RequestMethod.GET)
public String delUser(@RequestParam Long id) {
userRepository.delete(id);
return "redirect:/";
}
}
<%@ page language = "java" contentType = "text/html; charset=UTF-8"
pageEncoding = "UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>User List</title>
</head>
<body>
<h1>User List</h1>
<form action = "add" method = "post">
<input type = "text" name = "name" placeholder = "Enter user name" required />
<input type = "submit" value = "Add User" />
</form>
<ul>
<c:forEach items = "${users}" var = "user">
<li>${user.id} - ${user.name} -
<a href = "<c:url value='/del'><c:param name='id' value='${user.id}'/></c:url>">Delete User</a>
</li>
</c:forEach>
</ul>
</body>
</html>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:mvc = "http://www.springframework.org/schema/mvc"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package = "com.example" />
<mvc:annotation-driven />
<mvc:default-servlet-handler />
<bean
class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value = "/WEB-INF/views/" />
<property name = "suffix" value = ".jsp" />
</bean>
</beans>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:tx = "http://www.springframework.org/schema/tx"
xmlns:jpa = "http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<context:component-scan base-package = "com.example" />
<context:annotation-config />
<bean id = "dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name = "driverClassName" value = "org.hsqldb.jdbc.JDBCDriver" />
<property name = "url" value = "jdbc:hsqldb:mem:testdb" />
<property name = "username" value = "sa" />
<property name = "password" value = "" />
</bean>
<bean id = "entityManagerFactory" class = "org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name = "dataSource" ref = "dataSource" />
<property name = "packagesToScan" value = "com.example.model" />
<property name = "jpaVendorAdapter">
<bean class = "org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name = "generateDdl" value = "true" />
<property name = "showSql" value = "true" />
</bean>
</property>
</bean>
<bean id = "transactionManager" class = "org.springframework.orm.jpa.JpaTransactionManager">
<property name = "entityManagerFactory" ref = "entityManagerFactory" />
</bean>
<tx:annotation-driven />
<jpa:repositories base-package = "com.example.repository" />
</beans>
<?xml version = "1.0" encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id = "WebApp_ID" version = "4.0">
<display-name>hello-tomcat9-web</display-name>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/application-context.xml</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
</web-app>
antlr-2.7.7.jar
aopalliance-1.0.jar
aspectjrt-1.8.0.jar
commons-logging-1.1.3.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.4.Final.jar
hibernate-core-4.3.5.Final.jar
hibernate-entitymanager-4.3.5.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
hsqldb-2.3.2.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
javax.servlet-api-3.1.0.jar
javax.servlet.jsp.jstl-1.2.5.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
jcl-over-slf4j-1.7.7.jar
jsp-api-2.1.jar
jstl-api-1.2.jar
serializer-2.7.2.jar
servlet-api-2.5.jar
slf4j-api-1.7.7.jar
spring-aop-4.0.7.RELEASE.jar
spring-beans-4.0.7.RELEASE.jar
spring-context-4.0.7.RELEASE.jar
spring-core-4.0.7.RELEASE.jar
spring-data-commons-1.8.0.RELEASE.jar
spring-data-jpa-1.6.0.RELEASE.jar
spring-expression-4.0.7.RELEASE.jar
spring-jdbc-4.0.7.RELEASE.jar
spring-orm-4.0.7.RELEASE.jar
spring-tx-4.0.7.RELEASE.jar
spring-web-4.0.7.RELEASE.jar
spring-webmvc-4.0.7.RELEASE.jar
xalan-2.7.2.jar
экспорт ВОЙНА = hello-t9-web.war
поместите hello-t9-web.war в Tomcat9/webapps
Откройте «http://localhost:8080/hello-t9-web».
Судя по предоставленной вами информации, единственное, чем я могу помочь, это следующее:
Вы можете сразу перейти к следующему абзацу Jar List и узнать, есть ли у вас следующие файлы?
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>helloworldwebapp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>helloworld Maven Webapp</name>
<properties>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>6.1.10</version>
</dependency>
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
<build>
<finalName>helloworld</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
mvn dependency:copy-dependencies -DoutputDirectory=target/libs
target/libs
├── antlr4-runtime-4.13.0.jar
├── jakarta.annotation-api-2.0.0.jar
├── jakarta.persistence-api-3.2.0.jar
├── micrometer-commons-1.12.7.jar
├── micrometer-observation-1.12.7.jar
├── slf4j-api-2.0.2.jar
├── spring-aop-6.1.9.jar
├── spring-beans-6.1.9.jar
├── spring-context-6.1.9.jar
├── spring-core-6.1.9.jar
├── spring-data-commons-3.3.1.jar
├── spring-data-jpa-3.3.1.jar
├── spring-expression-6.1.9.jar
├── spring-jcl-6.1.9.jar
├── spring-jdbc-6.1.10.jar
├── spring-orm-6.1.10.jar
└── spring-tx-6.1.9.jar
Теперь проверьте файл jar в следующем списке. Вы скачали его?
mvn dependency:tree
+- org.springframework.data:spring-data-jpa:jar:3.3.1:compile
| +- org.springframework.data:spring-data-commons:jar:3.3.1:compile
| +- org.springframework:spring-context:jar:6.1.9:compile
| | +- org.springframework:spring-expression:jar:6.1.9:compile
| | \- io.micrometer:micrometer-observation:jar:1.12.7:compile
| | \- io.micrometer:micrometer-commons:jar:1.12.7:compile
| +- org.springframework:spring-aop:jar:6.1.9:compile
| +- org.springframework:spring-tx:jar:6.1.9:compile
| +- org.springframework:spring-beans:jar:6.1.9:compile
| +- org.springframework:spring-core:jar:6.1.9:compile
| | \- org.springframework:spring-jcl:jar:6.1.9:compile
| +- org.antlr:antlr4-runtime:jar:4.13.0:compile
| +- jakarta.annotation:jakarta.annotation-api:jar:2.0.0:compile
| \- org.slf4j:slf4j-api:jar:2.0.2:compile
+- org.springframework:spring-orm:jar:6.1.10:compile
| \- org.springframework:spring-jdbc:jar:6.1.10:compile
\- jakarta.persistence:jakarta.persistence-api:jar:3.2.0:compile
Рекомендуется:
(1) вы создаете пустой каталог,
(2) затем сгенерируйте pom.xml (как я указал выше),
(3), а затем выполните команду mvn dependency:copy-dependencies -DoutputDirectory=target/libs,
(4) вы можете сразу получить все зависимые файлы jar в каталоге target/libs, а затем скопировать их в свой проект веб-приложения.
Должен ли я загружать точные версии, указанные в списке JAR, или допустимо использовать версии, которые не совпадают точно? Дополнительно хочу отметить, что я использую Java версии 1.8. Поскольку я не использую pom.xml, мне нужно вручную загрузить эти JAR-файлы.
(1) Сначала просмотрите tomcat.apache.org/whatversion.html (2) Подтвердите версию Tomcat, которую вы хотите использовать (3) Затем подтвердите, какую версию спецификации сервлета вы хотите использовать? 6 или 4? (Это повлияет на то, использует ли он javax.* или jakarta.* по умолчанию) (4) Tomcat 10.1 использует jakarta.*, Servlet Spec 6 (5) Последняя версия Spring Framework 6 требует JDK 17+ (6) Spring Framework 5.3 .x: JDK 8–19 (ожидается)
(7) Сначала подтвердите, есть ли у вас ограничения на использование JDK 1.8 (JDK 8)? Если это так, вам не следует использовать Spring-data-jpa 3.3.1 (поскольку Spring-data-jpa 3.3.1 зависит от Spring 6), и аналогично для других версий пакета, если они зависят от Spring 6, вам не следует использовать их. Вместо этого вам следует использовать более старую версию.
(1) Версия JDK (JDK 1.8 или JDK 17) (2) Java EE 8 или Jakarta EE 10? (3) Версия Tomcat? Tomcat 9 или Tomcat 10.1 (4) Spring 5.3 или Spring 6?
Я знаю, что ваш проект веб-приложения не использует pom.xml, поэтому нет необходимости изменять ваш проект. Я предлагаю вам создать еще один пустой каталог и просто поместить предоставленный мной pom.xml в этот пустой каталог. Да. Затем выполните mvn dependency:copy-dependencies -DoutputDirectory=target/libs, чтобы загрузить все jar-файлы одновременно.
Я использую Tomcat 9.0 для своего сервера. Кроме того, я работаю с NetBeans 8.2, по умолчанию используется Spring Framework 4.0.1. Просто для подтверждения: я использую Java версии 1.8.
Я загрузил файлы JAR с точными версиями, которые вы указали, и добавил их в путь к классам, но ошибка компиляции не устранена.
вам не следует использовать Spring-data-jpa 3.3.1 (поскольку Spring-data-jpa 3.3.1 зависит от Spring 6.
тогда какую версию мне использовать?
возможно, Spring-data-jpa 1.7.2.RELEASE, это зависит от spring-core:jar:4.0.7.RELEASE (ваше ограничение: Spring Framework 4.0.1), я использую mvn dependency:tree, чтобы узнать дерево зависимостей.
после добавления spring-data-jpa 1.7.2.RELEASE теперь в консоли появляется это сообщение об ошибке Compiling 16 source files to C:\Users\DELL\Documents\NetBeansProjects\BirtProject\build\web\WEB-INF\classes C:\Users\DELL\Documents\NetBeansProjects\BirtProject\src\java\dao\StudentDao.java:17: error: cannot access PagingAndSortingRepository public interface StudentDao extends JpaRepository<Student , Long>{ bad class file: C:\Users\DELL\Downloads\JPA Jar files\spring-data-commons-3.3.1.jar(org/springframework/data/repository/PagingAndSortingRepository.class)
Задайте ИИ следующие вопросы: «Tomca 9 war JDK 1.8 Spring 4.0.1 Минимальный пример с использованием Spring MVC и Spring Data JPA». (Думаю, вам нужен минимальный пример веб-приложения (войны), ИИ, которым может быть CharGPT или что-то еще. Это облегчит вам получение минимального исполняемого примера.)
Spring-data-jpa 1.7.2.RELEASE зависит от Spring-data-commons 1.9.2.RELEASE.
java.lang.UnsupportedClassVersionError: org/apache/commons/logging/LogFactoryService has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (unable to load class [org.apache.commons.logging.LogFactoryService]) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2475)(1) Проверьте версию Apache Commons Logging, которую вы используете, используйте более старую версию. (Более новая версия может быть скомпилирована с помощью JDK 17 и не может быть выполнена во время выполнения JDK 1.8) (52.0 -> JDK 1.8, 61.0 -> JDK 17, ) (2) Если мой ответ не решит вашу проблему, пожалуйста, не установите его как принятое.
@Bilal Kundi - я обновил ответ и предоставил военный проект, который можно выполнить с помощью JDK 1.8, Springg 4 и Tomcat 9.
Все ошибки компиляции теперь устранены, но ошибки времени выполнения по-прежнему присутствуют в консоли, вот точная ошибка org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'studentController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private dao.StudentDao controller.StudentController.studentDao
я ограничился ответом, который я даю в комментариях, в противном случае я хочу поделиться своим applicationContext.xml, где, как мне кажется, чего-то не хватает, пожалуйста, как я могу поделиться своим кодом целиком
Можете ли вы поделиться проектом, который вы запустили весной 4 с Tomcat 9?
проект, который вы создали, поделитесь по адресу [email protected] со всем файлом jar.
Я опубликовал полное содержимое проекта, включая структуру каталогов, список файлов и содержимое файлов. Вам нужно всего лишь вставить содержимое в свой файл, чтобы запустить его. Я подтвердил, что проект можно развернуть в Tomcat для выполнения, поэтому во время выполнения появляется экран.
Я хочу, чтобы весь проект с файлом jar действительно пытался загрузить файл jar той же версии каждый раз, когда возникает какой-то конфликт.
после всех настроек я столкнулся с этой ошибкой org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'studentController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private dao.StudentDao controller.StudentController.studentDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [dao.StudentDao] found for dependency: expected at least 1 bean which
СтудентДао это package dao; import entity.Student; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface StudentDao extends JpaRepository<Student, Long> { // methods if any }
контроллер package controller; @Controller public class StudentController { @Autowired private StudentDao studentDao; @RequestMapping("/student") public String studentList(Model model) { List<Student> students = studentDao.findAll(); model.addAttribute("users", students); System.out.println("List of students: " + students); System.out.println("Controller of students"); return "student"; } }
я ограничен в публикации ответа, поэтому привожу весь код в комментариях Sorry, we are no longer accepting answers from your account because most of your answers need improvement or do not sufficiently answer the question. See the Help Center to learn more.
Вы можете добавить свой проект в свой вопрос. просто нажмите edit.
вопрос в обновлении, так как я не могу найти приложение, чтобы прикрепить проект
у меня есть вопрос и все подробности вместе с сообщением об ошибке, отображаемым в консоли
удалить javax.persistence-api-2.2.jar