java – ClassNotFoundException:org. hibernate. service. jndi. JndiException
•
Java
I get the following stack trace
java.lang.ClassNotFoundException: org.hibernate.service.jndi.JndiException java.net.urlclassloader$1.run(UnkNown Source) java.net.urlclassloader$1.run(UnkNown Source) java.security.AccessController.doPrivileged(Native Method) java.net.urlclassloader.findClass(UnkNown Source) org.springframework.boot.loader.Launchedurlclassloader.findClass(Launchedurlclassloader.java:148) java.lang.ClassLoader.loadClass(UnkNown Source) org.springframework.boot.loader.Launchedurlclassloader.doLoadClass(Launchedurlclassloader.java:131) org.springframework.boot.loader.Launchedurlclassloader.loadClass(Launchedurlclassloader.java:103) java.lang.ClassLoader.loadClass(UnkNown Source) java.lang.Class.forName0(Native Method) java.lang.Class.forName(UnkNown Source) org.jboss.logging.Logger$1.run(Logger.java:2252) java.security.AccessController.doPrivileged(Native Method) org.jboss.logging.Logger.getMessageLogger(Logger.java:2227) org.jboss.logging.Logger.getMessageLogger(Logger.java:2214) org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:143) org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) org.springframework.orm.jpa.LocalContainerEntityManagerfactorybean.createNativeEntityManagerFactory(LocalContainerEntityManagerfactorybean.java:318) org.springframework.orm.jpa.AbstractEntityManagerfactorybean.afterPropertiesSet(AbstractEntityManagerfactorybean.java:317) org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.invokeInitMethods(AbstractAutowireCapablebeanfactory.java:1607) org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.initializeBean(AbstractAutowireCapablebeanfactory.java:1544) org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.doCreateBean(AbstractAutowireCapablebeanfactory.java:539) org.springframework.beans.factory.support.AbstractAutowireCapablebeanfactory.createBean(AbstractAutowireCapablebeanfactory.java:475) org.springframework.beans.factory.support.Abstractbeanfactory$1.getObject(Abstractbeanfactory.java:300) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:296) org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:195) org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:973) org.springframework.context.support.AbstractApplicationContext.finishbeanfactoryInitialization(AbstractApplicationContext.java:750) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) com.mydomain.GetController.getUser(GetController.java:20) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(UnkNown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(UnkNown Source) java.lang.reflect.Method.invoke(UnkNown Source) org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:947) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:878) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:946) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:837) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:822) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
When my spring controller handles connections:
@RequestMapping(value = "/user",method = RequestMethod.GET) public @ResponseBody User getUser(@RequestParam(value="id",required=true) int id) { User user = null; ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); UserService userService = (UserService) context.getBean("userService"); user = userService.getUser(id); context.close(); return user; }
It executes a getuser on userservice:
import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class UserService { private UserDAO userDao; public UserDAO getUserDao() { return userDao; } @Autowired public void setUserDao(UserDAO userDao) { this.userDao = userDao; } public void addUser(User user) { getUserDao().insert(user); } public User getUser(int id) { return getUserDao().load(id); } public List<User> fetchAllPersons() { return getUserDao().selectAll(); } }
Where userdao is used to find entities:
import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @Repository("userDao") @Transactional(propagation = Propagation.required) public class UserDAO { private static final String SELECT_QUERY = "select u from users"; @Qualifier(value = "entityManagerFactory") private EntityManager entityManager; public EntityManager getEntityManager() { return entityManager; } public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } public void insert(User user) { entityManager.persist(user); } public User load(int id) { return entityManager.find(User.class,id); } public List<User> selectAll() { Query query = entityManager.createQuery(SELECT_QUERY); @SuppressWarnings("unchecked") List<User> users = (List<User>) query.getResultList(); return users; } }
I have the following spring config in / SRC / main / resources 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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <context:component-scan base-package="com.mydomain.orm" /> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerfactorybean"> <property name="persistenceXmlLocation" value="classpath:/persistence.xml" /> <property name="persistenceUnitName" value="userPersistenceUnit" /> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter" ref="jpaVendorAdapter" /> <property name="jpaDialect" ref="jpaDialect" /> </bean> <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="database" value="Hsql" /> <property name="databasePlatform" value="org.hibernate.dialect.HsqlDialect" /> </bean> <bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> <property name="dataSource" ref="dataSource" /> <property name="jpaDialect" ref="jpaDialect" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.postgresql.Driver" /> <property name="url" value="jdbc:postgresql://localhost:5432/mydb" /> <property name="username" value="my_user" /> <property name="password" value="" /> </bean> </beans>
Last but not least, the following is / SRC / main / resources / persistence xml:
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> <persistence-unit name="userPersistenceUnit" transaction-type="RESOURCE_LOCAL" > <class>com.mydomain.orm.User</class> </persistence-unit> </persistence>
What do I need to do to solve this error?
To be honest, when this problem is solved, I may just want to get a jndiexception What else do you think could be caused?
Solution
I covered the version of Hibernate entity manager, which is the same as hibernate core Fix
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码