Biliyorum aynı soru onlarca yerli-yabancı kaynakta soruldu. Ancak onu oraya koy, bunu şuraya ekle gibi açıklayıcı olmayan ve bizi sadece sonuca götürecek cevaplar ile değiştirdiğim uygulama biraz karıştı sanırım.

JPA'de yeniyim. Eclipse'de Java üzerinde JPA bağlantısından yararlanabilmek için EclipseLink Framework'ünü kullanıyorum. Öncelikle basit bir konsol uygulaması ile MySQL sunucusuna bağlandım ve basit birkaç işlem gerçekleştirdim. Uygulamamı Web ortamında kullanabilmek için Eclipse üzerinde Dynamic Web Project oluşturdum. Bu yüzden; Eclipse gerekli klasörleri otomatik oluşturdu. Ben sadece konsolda çalıştırdığım Java dosyalarını, persistence.xml ve kütüphaneleri (Jar dosyalarını) resimde göründüğü gibi yerleştirdim.

alt text

persistence.xml dosyası aşağıdaki gibi olup META-INF klasörü altındadır.

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="StockWatcherPU" transaction-type="RESOURCE_LOCAL">
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <class>Northwind.Entities.Customer</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/northwind?useUnicode=yes&amp;characterEncoding=UTF-8" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="" />
        </properties> 
    </persistence-unit>
</persistence>

Buraya EntityManagerFactoy ile aşağıdaki gibi erişmeye çalışıyorum:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("StockWatcherPU");
EntityManager em = emf.createEntityManager();

Kodu çalıştırdığımda aşağıdaki hatayı alıyorum: javax.persistence.PersistenceException: No Persistence provider for EntityManager named StockWatcherPU

soruldu: 24 Eki '13, 06:02

ridvannistelrooy's gravatar image

ridvannistelrooy
6255
cevap kabul oranı: 0%

Bir hata yok gibi gozukuyor muhtemel eclipse sapıtmıştır. Projeyi bir clean/build et muhtemel düzelir.

(24 Eki '13, 06:09) Turgay Can Turgay%20Can's gravatar image

Yaptığım en ufak değişiklikte bile clean/build yaptım ama hep aynı hatayı aldım Turgay Bey.

(24 Eki '13, 07:07) ridvannistelrooy ridvannistelrooy's gravatar image
1

mysql connector iki tane tanımlamışsın birini kaldırırmısın. Eclipselink'in jar'ını stable olan son versiyonunu kullanmanı öneririm.

(24 Eki '13, 12:59) Turgay Can Turgay%20Can's gravatar image

MySql connector'ü düzelttim ve Eclipse Jar'ın[1] son sürümünü yüklememe rağmen aynı hatayı alıyorum.

[1] http://www.eclipse.org/downloads/download.php?file=/rt/eclipselink/releases/2.5.1/eclipselink-2.5.1.v20130918-f2b9fc5.zip

(25 Eki '13, 03:10) ridvannistelrooy ridvannistelrooy's gravatar image

Sebebi basit, classpath problemi. Ben taa başindan bu yana JPA ile ugrasiyorum, egitimini ve danismanligini veriyorum. Cok sik rastladigim bir durum bu. Kaldiki yukarida verdiginiz bilgilerde baska tutarsizliklar da var. Ornegin <class>Northwind.Entities.Customer</class> satiri dogru degil cunku sourcesunuzda Northwind diye bir paket gorulmuyor. Ya da paket isimleriniz buyuk harfle baslamis, bu durum bir hata degil ama buradan bu kodun Java'yi bilen bir kisi tarafindan gelistirilmedigini anliyorum. Bu yuzden muhtemelen cok basit bu gibi hatalardan bir tanesi de aslinda cok sik rastlanani oalrak bir classpath problemini var.

permanent link

cevaplandı: 25 Eki '13, 05:00

kaldiroglu's gravatar image

kaldiroglu
22333
cevap kabul oranı: 12%

Konsol uygulamasında Northwind veri tabanını kullanmıştım. Aynı yapıyı direkt bu uygulamaya geçirince persistence.xml içindeki class adını dikkatsizlikten değiştirmemişim.

(25 Eki '13, 05:35) ridvannistelrooy ridvannistelrooy's gravatar image

Siz persistence.xml dosyanızda "org.apache.openjpa.persistence.PersistenceProviderImpl" yazarak OpenJPA kullandiginizi soyluyorsunuz ama classpathde EclipseLink de var. Hangisini kullanacaginiza karar vermelisiniz. Muhtemelen sistem EclipseLink implementationunu once buluyor ve hata veriyor. OpenJPA kullanacaksaniz sadece onun jarlari olmali. Bu konuda benim yazmakta oldugum kitaba danisabilirsiniz: http://www.jpabook.com ya da blogumda yazdigim yazilar da isinize yarayacaktir: htto://www.javaturk.org

Kolay gelsin.

Akin Kaldiroglu

permanent link

cevaplandı: 25 Eki '13, 03:34

kaldiroglu's gravatar image

kaldiroglu
22333
cevap kabul oranı: 12%

Dediğim gibi açıklama olmadan yapılan öneriler nedeni ile yazılımı biraz değiştirdim. Açıklamanız bir noktada beni aydınlatıyor ancak önceden EclipseLink Provider olarak aşağıdaki Provider'ı kullanıyordum ve aynı hatayı alıyordum. Yardımınız sayesinde Provider'ı yeniden aşağıdaki gibi değiştiriyorum ama dediğim gibi hata hala aynı. Aklınıza başka çözüm geliyor mu?

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

(25 Eki '13, 04:25) ridvannistelrooy ridvannistelrooy's gravatar image

Projenizde ayni Jar'lardan birden fazla var, eclipselink.jar, persistence.jar gibi.

permanent link

cevaplandı: 25 Eki '13, 05:07

kaldiroglu's gravatar image

kaldiroglu
22333
cevap kabul oranı: 12%

Jar dosyalarını kütüphane olarak eklemem yeterli mi? Birçok kaynakta kütüphanelerin WEB-INF/lib klasöründe olması gerektiği söyleniyor. Tam olarak doğrusu nedir bunun?

(25 Eki '13, 05:37) ridvannistelrooy ridvannistelrooy's gravatar image

Web projesi gelistiriyorsaniz, WEB-INF/lib dosyasinin altinda her Jar'in uygun surumde olanindan bir tane bulundurun. Tabi Jar dosyalarinizi dogru olarak secmeniz bir on sarttir.

permanent link

cevaplandı: 26 Eki '13, 17:34

kaldiroglu's gravatar image

kaldiroglu
22333
cevap kabul oranı: 12%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×86
×10

Soruldu: 24 Eki '13, 06:02

Görüntüleme: 1,015 kez

Son güncelleme: 26 Eki '13, 17:34

powered by BitNami OSQA