我正在处理涉及hibernate的应用程序。 我在调用我的应用程序时收到此异常:
org.hibernate.boot.registry.classloading.spi.ClassLoadingException: 无法加载类[oracle.jdbc.driver.Oracle Driver] org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:245) 在 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:200) 在 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:156) 在 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:95) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) 在 org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) 在 org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) 在 org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) 在 com.infy.EPP.resources.HibernateUtility.createSessionFactory(HibernateUtility.java:36) 在 com.infy.EPP.dao.BankLocationDAOImpl.getListOfBanks(BankLocationDAOImpl.java:27) 在 com.infy.EPP.business.service.BankLocationServiceImpl.getListOfBanks(BankLocationServiceImpl.java:20) 在 com.infy.EPP.web.managedbeans.BankLocationBean。(BankLocationBean.java:53) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 在java.lang.Class.newInstance(Class.java:433)at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:186) 在com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:100)at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) 在com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:257) 在 com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:117) 在 com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) 在 com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 在org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71) 在org.apache.el.parser.AstValue.getValue(AstValue.java:160)at org.apache.el.parser.AstEqual.getValue(AstEqual.java:37)at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) 在 org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106) 在 javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) 在 javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:457) 在javax.faces.component.UIComponent.encodeAll(UIComponent.java:1850) 在javax.faces.render.Renderer.encodeChildren(Renderer.java:176)at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889) 在javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) 在javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 在 com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:431) 在 com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:232) 在 com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133) 在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) 在com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) 在javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 com.infy.EPP.web.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:57) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 在 org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:620) 在 org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:318) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在 org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)
****>在java.lang.Thread.run(Thread.java:744)引起:
java.lang.ClassNotFoundException:无法加载请求的类:
的oracle.jdbc.driver.Oracle驱动程序
org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl $ AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:230)
在java.lang.ClassLoader.loadClass(ClassLoader.java:424)at at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:340)at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:242) ......还有72个
这是hibernate.cfg.xml:
<!-- hibernate dialect -->
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.Oracle Driver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="hibernate.connection.username">system</property>
<property name="hibernate.connection.password">oracle</property>
<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<!-- Automatic schema creation (begin) === -->
<property name="hibernate.hbm2ddl.auto">none</property>
<!-- Simple memory-only cache -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- <property name="show_sql">true</property> -->
<mapping class="com.infy.EPP.entites.LoginEntity" />
</session-factory>
这是Hibernate Utility文件:
public class HibernateUtility
{
private static final String CONFIGURATION_LOCATION = "com/infy/EPP/resources/hibernate.cfg.xml";
private static SessionFactory sessionFactory = null;
private static ServiceRegistry serviceRegistry;
public synchronized static SessionFactory createSessionFactory() {
if (sessionFactory == null)
{
try {
// Step1 : Loading the configuration details from
// hibernate.cfg.xml
Configuration configuration = new Configuration()
.configure(CONFIGURATION_LOCATION);
System.out.println("configuration in Utility=="+configuration); //---//syso1
// Step2 : Creating ServiceRegistry using the
// StandardServiceRegistryBuilder and Configuration defined in
// Step 1
serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
System.out.println("serviceRegistry=="+serviceRegistry); ---//syso 2
// Step3 : Creating the SessionFactory using the Configuration
// and serviceRegistry.
sessionFactory = configuration
.buildSessionFactory(serviceRegistry);
System.out.println("sessionFactory==="+sessionFactory); ---//syso 3
}
catch (Exception e)
{
e.printStackTrace();
EppLogger.logError("HibernateUtility",
"createSessionFactory", e.getMessage());
}
}
return sessionFactory;
}
}
这是我调用它的DAO类方法:
public Login authorize(Login to) throws Exception
{
LoginEntity le = null;
SessionFactory sessionFactory = null;
Session session = null;
Login login =null;
try {
sessionFactory = HibernateUtility.createSessionFactory();
session=sessionFactory.openSession();
session.beginTransaction();
le = (LoginEntity)session.get(LoginEntity.class, to.getUserId());
if (le != null)
{
login = new Login();
login.setPassword(le.getPassword());
login.setRole(le.getRole());
login.setStatus(le.getStatus());
login.setUserId(le.getUserId());
}
session.getTransaction().commit();
}
catch (PersistenceException exception) {
EppLogger.logError(this.getClass().getName(), "authorize",
exception.getMessage());
throw new Exception("DAO.TECHNICAL_ERROR");
}
catch (Exception e)
{
e.printStackTrace();
EppLogger.logError(this.getClass().getName(), "authorize", e.getMessage());
throw new Exception("DAO.TECHNICAL_ERROR");
}
finally
{
if(session!=null)
{
session.close();
sessionFactory.close();
}
}
return login;
}
我在lib文件夹下有ojdbc7。它仍然没有用。 我在SO上经历了几个页面,建议在classpath中添加ojdbc14。仍然没有成功
更新: 我在Hibernate Utility文件中放了一些syso语句。我正在获得前2但不是第3个系统的价值。
答案 0 :(得分:2)
driver_class属性中似乎有一个空格。
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.Oracle Driver</property>
即使是错误信息也表明了这一点。
尝试删除空格
即,
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>