Hibernate: konnte nicht geladen angeforderte Klasse
Ich benutze Hibernate mit mysql, aber zur Laufzeit bekomme ich die folgende exception:
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>
Ich bin mit annotierten Klassen wie
@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;
}
}
endlich, ich erstelle session, wie
SessionFactory factory = new AnnotationConfiguration().addPackage("models").addAnnotatedClass(MSISDN.class).buildSessionFactory();
Session session = factory.openSession();
- Erzähl ein bisschen mehr darüber, wie Sie die Konfiguration Ihrer Beharrlichkeit. Wie es aussieht, versucht die Anwendung zu laden eine H2-db-Treiber, während Sie scheinen zum konfigurieren einer mySql-Treiber in Ihrem Ruhezustand cfg. Es sieht nicht wie Ihr Programm den hibernate.cfg.xml Sie haben hier gepostet. Vielleicht haben Sie eine andere version dieser Datei auf dem Klassenpfad.
- Ich legte meine hibernate.cfg.xml innerhalb der src-Ordner.
- Ist die Datei auch in den classpath beim ausführen der Anwendung? E. g. wenn Sie mit maven, sollten Sie besser steckte es in den Ordner Ressourcen.
- Nein, ich bin nicht mit maven. und ja, bei mir laufen die (exakt gleiche)hibernate.cfg.xml erstellt in dem Verzeichnis bin, d.h. es geht in die Binär-Paket.
- Aber Sie haben Recht, denn egal, wo ich meine hibernate.cfg.xml der gleiche Fehler Auftritt (das heißt, Sie nicht zu beschweren, dass es nicht finden, der cfg.xml). Aber ich habe noch nicht bekommen, wie Sie Fehler beheben.
- Schau mal hier: docs.jboss.org/hibernate/orm/4.0/devguide/en-US/html/... Scheint, wie die
hibernate.dialect
Eigenschaft sollte nicht innerhalb dersession-factory
tag.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke (bin mir aber nicht sicher), dass die Schaffung der
Configuration
Objekt, wie Sie benötigen, um geben Sie die Konfigurations-xml-Datei.Versuchen Sie, wie dies (bei mir funktionierte es):
Sowieso, bemerkte ich, dass Sie eine Menge von veralteten Methoden. Ich schlage vor, Sie verwenden keine veralteten Methoden.
wirft ClassNotFoundException "für die Klasse" org.h2.Treiber .. hast du eine Dose mit dieser Klasse? überprüfen Sie http://www.jarfinder.com/index.php/java/info/org.h2.Driver