Mặc dù dự án này đã làm việc cho tôi trong một thời gian, tôi là bây giờ nhận được một ngoại lệ khi tôi cố gắng để triển khai ứng dụng bối cảnh của tôi trong Tomcat:Spring MVC - Tại sao ngoại lệ NoSuchMethodError khi triển khai ngữ cảnh?
Servlet /testapp threw load() exception
java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:62)
Từ những gì tôi đã đọc, điều này có thể xảy ra nếu có là nhiều phiên bản của Spring đang được biên dịch trong ứng dụng. Tuy nhiên, tôi đã hoàn toàn xóa kho lưu trữ phụ thuộc cục bộ của mình để xác nhận rằng tôi chỉ có phiên bản tôi muốn trong đường dẫn xây dựng của mình. Các phụ thuộc của tôi như sau:
<properties>
<java-version>1.6</java-version>
<org.springframework.version>3.1.0.RELEASE</org.springframework.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<!-- CGLIB, only required and used for @Configuration usage -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.2.2</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
<optional>false</optional>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
Tôi không có lỗi trình biên dịch trong dự án Eclipse và nó xây dựng hoàn hảo, không có cảnh báo hoặc lỗi. Tuy nhiên, Tomcat đang đánh dấu servlet thử nghiệm duy nhất của tôi là không có sẵn và khi tôi đuôi các bản ghi, stacktrace ở trên là gợi ý duy nhất của tôi.
Bất kỳ trợ giúp nào mà bất kỳ ai có thể cung cấp đều sẽ được đánh giá cao. Kinh nghiệm của tôi với Spring và Spring MVC là tối thiểu, vì vậy tôi hy vọng đây chỉ đơn giản là một vấn đề newbie đã hoàn toàn thoát khỏi tôi.
Điều đầu tiên tôi làm khi bắt đầu thấy các lỗi bí ẩn là dọn sạch thư mục công việc tomcat ... đáng để thử – nickdos
Mẹo tuyệt vời! Điều này đã giúp tôi xác định vấn đề, cảm ơn rất nhiều! – mchandler