2012-04-29 13 views
7

Tôi đang sử dụng Spring liệu JPA và nó là lạ nhưng nó cố gắng để quét (trong triển khai) các tập tin kiểm tra, gây ra một lỗi:mùa xuân dữ liệu JPA - quét cho các tập tin trong thư mục kiểm tra

java.lang.ClassNotFoundException: org.junit.runner.RunWith 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) 
... 
WARN : org.springframework.core.type.classreading.AnnotationAttributesReadingVisitor - Failed to classload  type while reading annotation metadata. This is a non-fatal error, but certain annotation metadata may be  unavailable. 

Các ClassNotFoundException là bởi vì các phụ thuộc thử nghiệm nằm trong phạm vi "kiểm tra" trong maven.

Nhưng câu hỏi của tôi là, tại sao nó đang quét thư mục kiểm tra? (/ src/main/test).

Cấu hình bối cảnh như sau:

<jpa:repositories base-package="com.domain.repository" /> 

Bạn có thể cho tôi biết những gì tôi làm sai? Nội dung .classpath của tôi như sau:

<classpathentry kind="src" output="target/classes" path="src/main/java"/> 
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> 
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/> 
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/> 
... 

Tôi thực sự đánh giá cao sự trợ giúp của bạn về điều này.

+2

Tôi đang gặp vấn đề tương tự trong dự án của mình, với mùa xuân 3.1.1. Bạn đã tìm thấy cách của bạn xung quanh nó? – elias

Trả lời

0

Nó có vẻ là một lỗi "tính năng giả" trong mùa xuân:

https://jira.springsource.org/browse/SPR-9233

rằng cảnh báo bạn khi nó không thể tìm thấy những lớp cho một chú thích tại thời gian chạy, ngay cả khi ứng dụng của bạn là khá nhiều OK.

2

But my question is, why it is scanning test folder? (/src/main/test).

The context configuration is as follows:

<jpa:repositories base-package="com.domain.repository" />

Để chính xác, tôi không nghĩ Spring đang quét thư mục này - sau cùng thì đó là thư mục nguồn của bạn. Nó chỉ nhìn vào cấu trúc gói được triển khai và sự nghi ngờ của tôi sẽ là nguyên nhân của vấn đề có liên quan đến điều đó.

Tôi gặp phải vấn đề tương tự nhưng nó đã được gây ra bởi một cấu hình triển khai sai trong Eclipse hơn là một cái gì đó cụ thể cho Spring. Tôi đã cấu hình Eclipse để triển khai các lớp thử nghiệm của mình trong src/test/java đến gói triển khai đích để tất cả các tệp thử nghiệm (tất nhiên là có cấu trúc gói tương ứng), nơi có mặt khi tôi khởi động máy chủ. Tuy nhiên, xét xử bởi đoạn mã .classpath bạn đã đăng, tôi thấy bạn đang loại trừ chúng một cách rõ ràng để không được triển khai.

Tuy nhiên, có những cách khác mà tệp lớp học có thể leo vào triển khai của bạn. Bạn đã có thể xác minh rằng các lớp thử nghiệm trên thực tế không có trong gói đã triển khai chưa? Có thể chúng được đồng bộ hóa ở đó bởi một số quy trình khác mà bạn đã thiết lập (Trình cắm FileSynch có thể)?

Ngoài ra, bạn có bất kỳ tệp ngữ cảnh mùa xuân nào khác có cấu hình để quét các gói cơ sở khác không?

Bạn có thể thêm một số chi tiết khác về cấu hình Eclipse của bạn và cách bạn triển khai cho máy chủ thử nghiệm của mình để giúp giải quyết vấn đề.