2011-08-08 22 views
7

Bu java hazırda bekletme hakkında soru. benim hibernate.cfg.xmlhibernate.cfg.xml MySQL veritabanı hakkında bilgi içerir, neden bu istisna alıyorum?

Örneğim

person.hbm.xml bu

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-mapping> 
    <class name="test.person" table="person"> 
     <id name="id" type="int" column="id" > 
      <generator class="assigned"/> 
     </id> 
     <property name="fName"> 
      <column name="fName" /> 
     </property> 
     <property name="lName"> 
      <column name="lName"/> 
     </property> 
     <property name="age"> 
      <column name="age"/> 
     </property> 
     <property name="gender"> 
      <column name="gender"/> 
     </property> 
    </class> 
</hibernate-mapping> 

olduğunu, veritabanına

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/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:3306/poc</property> 
    <property name="hibernate.connection.username">user</property> 
    <property name="hibernate.connection.password"/> 
    <mapping class="test.person" file="" jar="" package="" resource="person.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

Bağlantı çalışıyor ve ben veritabanları ve tablolar keşfedebilirsiniz olduğunu benim kişi sınıfı

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package test; 

public class person { 

    private int id; 
    private String fName; 
    private String lName; 
    private String gender; 
    private int age; 

    public person() { 
     System.out.println("person"); 
    } 

    public int getId() { 
     return id; 
    } 

    public int getAge() { 
     return age; 
    } 

    public String getfName() { 
     return fName; 
    } 

    public String getGender() { 
     return gender; 
    } 

    public String getlName() { 
     return lName; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public void setfName(String fName) { 
     this.fName = fName; 
    } 

    public void setGender(String gender) { 
     this.gender = gender; 
    } 

    public void setlName(String lName) { 
     this.lName = lName; 
    } 

} 
İşte
SEVERE: JDBC Driver class not found: org.apache.derby.jdbc.ClientDriver 
java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:169) 
    at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100) 
    at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:61) 
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124) 
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56) 
    at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292) 
    at test.Test.main(Test.java:15) 
Exception in thread "main" org.hibernate.HibernateException: JDBC Driver class not found: org.apache.derby.jdbc.ClientDriver 
    at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:66) 
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124) 
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56) 
    at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292) 
    at test.Test.main(Test.java:15) 
Caused by: java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:169) 
    at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100) 
    at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:61) 
    ... 7 more 
Java Result: 1 

ben bağışta bulunan kimse

bu soruyla neden bilmek beni bu istisnaları çözmeye yardımcı olun benim ana sınıfı

package test; 


import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

public class Test { 

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { 


     Session session = null; 
     SessionFactory sessionFactory =new Configuration().configure().buildSessionFactory(); 
     session = sessionFactory.openSession(); 

     person obj = new person(); 
     obj.setfName("Aqif"); 
     obj.setlName("Hamid"); 
     obj.setAge(24); 
     obj.setGender("Male"); 

     session.save(obj); 
     session.flush(); 
     session.close(); 

    } 
} 

bu özel durum alıyorum, gelir istisna

java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver 

nerede hibernate.cfg.xml MySQL veritabanı için ayarlanmış olarak


DÜZENLEME: dosyaların

Yer,

O .java dosyaların kökünde bulunan

C: ..... NetBeansProjects \ test \ src

Bu, projemin src klasörüdür.

ve java dosyaları

C: ..... NetBeansProjects \ Ben de diğer bazı yerlerde benim hibernate.cfg.xml dosyasını başa çıkma tarafından çalıştık

test \ src \ testi.

+0

geçirerek yapılandırması oluşturmak? – Jeremy

+0

.java dosyalarının kökünde bulunur. NetBeansProjects \ test \ src Bu, projemin src klasörüdür. Hazırladığım hibernate.cfg.xml dosyasını başka konumlara da denedim. Kişi olmayan kişi için –

+0

-1. Java'da sınıf adlarının büyük harfle yazılması oldukça standarttır. –

cevap

9

. Hazırda beklet bu dosyayı bulmak ve yüklemek için geçerli iş parçacığı bağlam sınıf yükleyicisini kullanır. Test sınıf bir JAR içindeyse

  • ardından yapılandırma dosyası, JAR kökünde olmalıdır: Bu anlamına gelir.
  • Test sınıfı bir dizinde bulunuyorsa, , sonra hibernate.cfg.xml/classes içinde bulunmalıdır.

Geçerli sorununuz büyük olasılıkla Hibernate tarafından bulunan ve yüklenen başka bir hibernate.cfg.xml dosyasının nedeni olabilir. Sınıf yolunuzun kökünde bir yapılandırma dosyası bulunamazsa bu mümkündür; Hazırda bekletme, bir yapılandırma dosyasını bulana kadar yapılandırma dosyasının yüklenmesini Environment sınıf 'sınıf yükleyicisi'ne gönderir. Bunu önlemek için, MySQL ile ilgili özelliklere sahip istediğiniz yapılandırma dosyasının sınıf yolunuzun kökünde bulunması gerektiğinden emin olmalısınız.

+1

Veya yapılandırmanızı 'mysql-hibernate.cfg.xml' içine koyun ve 'configure (" mysql-hibernate.cfg.xml ")' – Vlad

+0

' u arayın. Lütfen gönderimimin düzenlenmesine bakın –

+0

@Aqif, bunlar kaynağınızın dizinleridir Dosyalar. Yapılandırma dosyasının çalışma zamanı sınıf yolu dizinine veya JAR'a kopyalandığından emin olmanız gerekir. IDE'niz sizin için yapabilir ya da olmayabilir. –

2

Yanlış hibernate.cfg.xml kullanıyorsunuz. Paket/alt anahtarda değil, src adresinde bulunmalıdır. Sınıf yolunun kökünde mevcut olmalıdır hibernate.cfg.xml

1

Her şeyden önce sınıf adınızı doğru java biçiminde değiştirin. Sınıf adını "kişi" yerine "Kişi" olarak değiştirin. Ve şimdi, pim seçeneği yardımı içinde ile Veritabanı bağlantı emin olun Eğer Hibernate Tutorial 02 - Setting Up Hibernate ve bağlantı mekanizmasının tamamlanmasından sonra Hibernate Tutorial 03 Part 1- Writing a Hibernate Application

izleyin tarafından bağlamak istediğiniz için gerekli Veritabanı, Eclipse varsayılan veritabanı değiştirmek ECLIPS ... Şimdi sınıf yolunda yılında sınıf yolu ve seti kavanoz dosyalarının kök

0

koyun hibernate.cfg.xml Sonra işe wil ... Eğer hazırda ile dB ile bağlanmak için hazır.

0

Oturum yapılandırmasını yapılandırma fabrikasına vermediğiniz sürece, eşleme ve veritabanı bilgileriyle oturum nesnesi oluşturulmaz. Dolayısıyla, sadece hibernate.cfg.xml

senin `hibernate.cfx.xml` bulunduğu
Configuration cfg = new Configuration(); 
cfg.configure("hibernate.cfg.xml");// populates the data   
            // configuration file 

// creating seession factory object 
SessionFactory factory = cfg.buildSessionFactory(); 

// creating session object 
Session session = factory.openSession(); 
İlgili konular