java – ClassNotFoundException:org. hibernate. service. jndi. JndiException

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
分享
二维码
< <上一篇
下一篇>>