【发布时间】:2015-05-07 06:18:50
【问题描述】:
我正在尝试将 C3P0 用作 hbernate 中的连接提供程序。我正在使用 netbeans 8.0 并添加了 Hibernate 4.x(JPA 2.0) 库。
这是我的配置:
public Session getOpenSession() {
Configuration pgConf = new Configuration();
pgConf.setProperty(Environment.DIALECT, "org.hibernate.dialect.PostgreSQLDialect");
pgConf.setProperty(Environment.DRIVER, "org.postgresql.Driver");
pgConf.setProperty(Environment.URL, "jdbc:postgresql://localhost:5432/testdb");
pgConf.setProperty(Environment.USER, "user");
pgConf.setProperty(Environment.PASS, "pass");
pgConf.setProperty(Environment.POOL_SIZE, "20");
pgConf.setProperty(Environment.CONNECTION_PROVIDER, "org.hibernate.connection.C3P0ConnectionProvider");
pgConf.setProperty(Environment.C3P0_MIN_SIZE, "7");
pgConf.setProperty(Environment.C3P0_MAX_SIZE, "53");
pgConf.setProperty(Environment.C3P0_TIMEOUT, "100");
pgConf.setProperty(Environment.C3P0_MAX_STATEMENTS, "50");
pgConf.setProperty(Environment.C3P0_IDLE_TEST_PERIOD, "1000");
pgConf.setProperty("hibernate.c3p0.validate", "true");
return pgConf.buildSessionFactory().openSession();
}
当我调用这些方法时,它会抛出以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: com/mchange/v2/log/MLog
at com.mchange.v2.c3p0.DataSources.<clinit>(DataSources.java:72) at com.mchange.v2.c3p0.DataSources.<clinit>(DataSources.java:72)
at org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:197)
at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:76)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:160)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:132)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89)
at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:76)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:160)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:132)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1818)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1776)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1861)
at cu.uci.nimbus.Util.getPGSession(Util.java:193)
at cu.uci.nimbus.evaluacion.util.SourceProvider.<init>(SourceProvider.java:45)
at cu.uci.nimbus.evaluacion.impl.EvaluadorImpl.<init>(EvaluadorImpl.java:75)
at cu.uci.nimbus.Main.eval(Main.java:140)
at cu.uci.nimbus.Main.main(Main.java:84)
Caused by: java.lang.ClassNotFoundException: com.mchange.v2.log.MLog
at java.net.URLClassLoader$1.run(URLClassLoader.java:359)
at java.net.URLClassLoader$1.run(URLClassLoader.java:348)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:347)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 18 more
Java 结果:1
为了解决这个错误,我添加了 mchange-commons-java-0.2.8.jar,其中包含 com.mchange.v2.log.MLog 类,但仍然没有工作。
PS:为我的英语道歉。
【问题讨论】:
标签: java hibernate orm configuration c3p0