2014-05-21 52 views
9

Rất mới đến mùa xuân và JUnit. Tôi đang cố gắng chạy một trường hợp thử nghiệm JUnit đơn giản cho lớp dịch vụ mùa xuân, nhưng nó không thành công và tôi nhận được ngoại lệ này. Tôi chưa viết bất kỳ thử nghiệm nào, nhưng cố gắng chạy qua trước khi triển khai. Sử dụng tomcat v7.0. Và tôi không nghĩ rằng có bất kỳ phiên bản xung đột mùa xuân nào. Hãy giúp tôi.java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.isInJavaLangAnnotationPackage (Ljava/lang/chú thích/Chú thích;) Z

java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.isInJavaLangAnnotationPackage(Ljava/lang/annotation/Annotation;)Z 
at org.springframework.test.context.MetaAnnotationUtils.findAnnotationDescriptor(MetaAnnotationUtils.java:126) 
at org.springframework.test.context.MetaAnnotationUtils.findAnnotationDescriptor(MetaAnnotationUtils.java:96) 
at org.springframework.test.context.ContextLoaderUtils.resolveActiveProfiles(ContextLoaderUtils.java:499) 
at org.springframework.test.context.ContextLoaderUtils.buildMergedContextConfiguration(ContextLoaderUtils.java:722) 
at org.springframework.test.context.ContextLoaderUtils.buildMergedContextConfiguration(ContextLoaderUtils.java:656) 
at org.springframework.test.context.DefaultTestContext.<init>(DefaultTestContext.java:93) 
at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:119) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:120) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:109) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29) 
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

Tôi cần kiểm tra ở đâu nếu có bất kỳ chum lò xo xung đột nào trong dự án của tôi? Và tập tin pom.xml của tôi là:

<dependencies> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-beans</artifactId> 
    <version>4.0.2.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>4.0.2.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
    <version>4.0.2.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId> 
    <version>4.0.2.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-jdbc</artifactId> 
    <version>3.1.4.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-commons</artifactId> 
    <version>1.5.0.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-commons-core</artifactId> 
    <version>1.4.1.RELEASE</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-dao</artifactId> 
    <version>2.0.8</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.derby</groupId> 
    <artifactId>derby</artifactId> 
    <version>10.10.1.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.derby</groupId> 
    <artifactId>derbyclient</artifactId> 
    <version>10.10.1.1</version> 
</dependency>   
<dependency> 
    <groupId>commons-pool</groupId> 
    <artifactId>commons-pool</artifactId> 
    <version>1.6</version> 
</dependency> 
<dependency> 
    <groupId>commons-dbcp</groupId> 
    <artifactId>commons-dbcp</artifactId> 
    <version>1.4</version> 
</dependency> 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-test</artifactId> 
    <version>1.0.0.RELEASE</version> 
</dependency> 

+2

Bạn đang trộn các phiên bản Spring (4.0.2, 3.1.4 và 2.0.8) không bao giờ trộn các phiên bản của một khung công tác đang gặp sự cố chờ đợi xảy ra. Lưu ý 'spring-dap' bây giờ là' spring-orm'. Di chuyển tất cả các phiên bản sang '4.0.5.RELEASE'. –

Trả lời

9

Đó là phương pháp xuất hiện trong that commit, mà có vẻ là 4.0.3+. Chỉ cập nhật phụ thuộc mùa xuân lên phiên bản mới nhất.

+0

Cảm ơn nó đã làm việc !! – JavaBee

19

Vấn đề là bạn đang trộn các phiên bản khác nhau của Spring, bạn đang trộn (2.0.8, 3.1.4 và 4.0.2) trong dự án của bạn. Đó là rắc rối chờ đợi để xảy ra.

Để ngăn chặn những loại sự việc này, bây giờ có tên là "bill of materials" POM mà bạn có thể nhập.

Bạn cần thêm phần phụ thuộcQuản lý để nhập bom.

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-framework-bom</artifactId> 
      <version>4.0.5.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

Hiện tại, bạn có thể xóa phiên bản và thay thế spring-dao bằng spring-orm. Thêm lợi ích là tất cả phụ thuộc spring- * của bạn bây giờ sẽ được quản lý để phát hành mới nhất và bạn chỉ có một vị trí duy nhất cho số phiên bản của bạn.

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-beans</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-jdbc</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-orm</artifactId> 
</dependency> 

Bạn có thể áp dụng cùng một mẹo cho dữ liệu mùa xuân vì điều đó cũng có bom.

+0

Đồng ý! Gây ra bởi có các phiên bản khác nhau của Spring. – coderz

0

Thay thế các lọ cũ của bạn bằng lọ mới dựa trên tệp Spring-framework-bom.LATEST.VERSION.pom.

Bằng cách đó, tôi đã giải quyết được sự cố của mình.

0

Tôi vừa xóa thư mục đích trong dự án maven của mình và xây dựng lại chiến tranh và vấn đề này biến mất.

Các vấn đề liên quan