我使用休眠與MySQL,但在運行時我得到以下異常:休眠:無法加載所請求的類
Exception in thread "main" org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver org.h2.Driver class not found
at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:107)
at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
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:75)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:77)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2283)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2279)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1748)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1788)
at driver.Main.main(Main.java:29)
Caused by: org.hibernate.service.classloading.spi.ClassLoadingException: Unable to load class [org.h2.Driver]
at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:141)
at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:104)
... 14 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.h2.Driver
at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl$1.findClass(ClassLoaderServiceImpl.java:99)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:138)
... 15 more
的hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/ict
</property>
<property name="hibernate.connection.username">
root
</property>
<property name="hibernate.connection.password">
root
</property>
</session-factory>
</hibernate-configuration>
我使用註解的類象
@Entity
@Table (name="method_msisdn_info")
public class MSISDN {
public MSISDN(){}
@Id @GeneratedValue @Column(name="msisdn_id")
int msisdn_id;
public int getMsisdn_id() {
return msisdn_id;
}
public void setMsisdn_id(int msisdn_id) {
this.msisdn_id = msisdn_id;
}
@Column(name="destination_msisdn")
BigInteger destination_msisdn;
public BigInteger getDestination_msisdn() {
return destination_msisdn;
}
public void setDestination_msisdn(BigInteger destination_msisdn) {
this.destination_msisdn = destination_msisdn;
}
@Column(name="product_list")
String product_list;
public String getProduct_list() {
return product_list;
}
public void setProduct_list(String product_list) {
this.product_list = product_list;
}
@Column(name="country")
String country;
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
@Column(name="operator")
String operator;
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
@Column(name="destination_currency")
String destination_currency;
public String getDestination_currency() {
return destination_currency;
}
public void setDestination_currency(String destination_currency) {
this.destination_currency = destination_currency;
}
@Column(name="error_code")
int error_code;
public int getError_code() {
return error_code;
}
public void setError_code(int error_code) {
this.error_code = error_code;
}
@Column(name="wholesale_price_list")
String wholesale_price_list;
public String getWholesale_price_list() {
return wholesale_price_list;
}
public void setWholesale_price_list(String wholesale_price_list) {
this.wholesale_price_list = wholesale_price_list;
}
@Column (name ="retails_price_list")
String retail_price_list;
public String getRetail_price_list() {
return retail_price_list;
}
public void setRetail_price_list(String retail_price_list) {
this.retail_price_list = retail_price_list;
}
@Column(name="marked_processed")
int marked_processed;
public int getMarked_processed() {
return marked_processed;
}
public void setMarked_processed(int marked_processed) {
this.marked_processed = marked_processed;
}
}
終於我喜歡
創建會話SessionFactory factory = new AnnotationConfiguration().addPackage("models").addAnnotatedClass(MSISDN.class).buildSessionFactory();
Session session = factory.openSession();
告訴你更多關於如何配置你的持久性。看起來應用程序試圖加載H2數據庫驅動程序,而您似乎在您的休眠cfg中配置了mySql驅動程序。它看起來並不像你的程序使用你在這裏發佈的hibernate.cfg.xml。可能是你的班級路徑上有該文件的另一個版本。 – Matthias
我將我的hibernate.cfg.xml放在src文件夾中。 –
當您運行應用程序時,該文件是否也在您的類路徑中?例如。如果你使用的是maven,你最好把它放在資源文件夾中。 – Matthias