2008-09-16 12 views
9

Tôi đang cố tải dữ liệu thử nghiệm vào DB thử nghiệm trong khi xây dựng maven để thử nghiệm tích hợp. persistence.xml đang được sao chép sang target/test-classes/META-INF/ một cách chính xác, nhưng tôi nhận được ngoại lệ này khi chạy thử nghiệm.persistence.xml trong khi thử nghiệm maven

javax.persistence.PersistenceException: cung cấp Không Persistence cho EntityManager tên aimDatabase

Dường như nó không tìm thấy hoặc tải persistence.xml.

Trả lời

2

Nếu đây là trên cửa sổ, bạn có thể sử dụng procmon của sysinternal để tìm hiểu xem nó có kiểm tra đúng đường dẫn hay không.

Chỉ lọc theo đường dẫn -> chứa -> persistence.xml. Procmon sẽ nhận bất kỳ nỗ lực nào để mở tệp có tên persistenc.xml và bạn có thể kiểm tra để xem đường dẫn hoặc đường dẫn đã được thử.

Xem ở đây để xem chi tiết thêm về ProcMon: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

2

tôi đã cùng một vấn đề và nó đã không phải là nó không thể tìm thấy tập tin persistence.xml, nhưng mà nó không thể tìm thấy các nhà cung cấp quy định tại XML.

Đảm bảo rằng bạn có các phụ thuộc nhà cung cấp JPA chính xác và định nghĩa nhà cung cấp chính xác trong tệp xml của bạn.

tức là. <provider>oracle.toplink.essentials.PersistenceProvider</provider>

Với maven, tôi đã phải cài đặt 2 lọ cơ bản cần thiết tại địa phương vì không có kho lưu trữ công cộng nào chứa các phụ thuộc.

1

chúng tôi gặp vấn đề tương tự, thực hiện một số chỉnh sửa về dự án và kết quả cuối cùng sau vấn đề (mô tả lỗi rõ ràng hơn): tại oracle.toplink.essentials.ejb.cmp3.persistence. PersistenceUnitProcessor.computePURootURL (PersistenceUnitProcessor.java:248)

Với thông tin đó, chúng tôi đã thu hồi một quy tắc chính: KHÔNG CÓ TRẮNG TRẮNG TRONG TÊN PATH !!!

Hãy thử điều này. Làm việc cho chúng tôi nụ cười. Có thể một ngày nào đó điều này sẽ được khắc phục.

Hy vọng điều này phù hợp với bạn. Chúc may mắn.

6

Tôi đang sử dụng Maven2, và tôi đã quên để thêm phụ thuộc này trong tập tin pom.xml của tôi:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>3.4.0.GA</version> 
</dependency> 
+0

rất tốt! Sai lầm của tôi cũng :) Cảm ơn – artaxerxe

16

Chỉ cần giải quyết cùng một vấn đề với một dự án JPA dựa Maven/Eclipse.

Tôi đã có thư mục META-INF của mình theo số src/main/java với concequence rằng nó không được sao chép vào thư mục đích trước giai đoạn thử nghiệm.

Chuyển thư mục này sang src/main/resources giải quyết được sự cố và đảm bảo rằng tệp META-INF/persistence.xml đã có trong target/classes khi các thử nghiệm được chạy.

I nghĩ rằng khía cạnh JPA đặt tệp META-INF/persistence.xml của tôi trong , hóa ra là gốc của sự cố của tôi.

+0

+1: Tôi đã gặp sự cố tương tự và đề xuất của bạn đã khắc phục sự cố đó. – Raedwald

+0

Cảm ơn rất nhiều, giờ khắc phục sự cố đã lưu này! – javydreamercsw

+0

Cảm ơn một loooottt! – Sara

1

Tệp persistence.xml của bạn có nằm trong scr/test/resources không? Nguyên nhân tôi gặp phải vấn đề tương tự.

Tất cả mọi thứ đang làm việc tốt miễn là persistence.xml tôi tọa lạc tại src/main/nguồn.

Nếu tôi di chuyển persistence.xml đến src/test/resources không còn hoạt động nữa.

duy nhất câu trả lời hữu ích, nhưng đáng buồn là ở đây: http://jira.codehaus.org/browse/SUREFIRE-427

Có vẻ như nó không phải là có thể ngay bây giờ vì những lý do không rõ ràng. :-(