2011-07-06 28 views
6

Tôi đang chạy một số mã servlet trong tomcat trong nhật thực. Nó đã hoạt động tốt nhưng hôm nay tôi gặp lỗi Unable to locate Spring NamespaceHandler for XML schema namespace. Lỗi đầy đủ trông giống như sau:Không thể xác định vị trí Spring NamespaceHandler cho không gian tên lược đồ XML

SEVERE: Allocate exception for servlet RunServlet 
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration  problem: Unable to locate Spring NamespaceHandler for XML schema namespace  [http://www.springframework.org/schema/tx] 
Offending resource: class path resource [spring/dao.xml] 

Tôi đã xem xét các câu hỏi khác liên quan đến lỗi này, nhưng tôi thực sự không hiểu câu trả lời.

Khi tôi xem libs mục tiêu, tôi có thể thấy rằng spring-tx-3.0.5.RELEASE.jar nằm trong WEB-INF/lib.

Có ai có thể giúp tôi không?

Cảm ơn bạn rất nhiều!

EDIT: dao.xml bắt đầu:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
      http://www.springframework.org/schema/tx 
      http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> 

EDIT: Không chắc nếu điều này là có liên quan, nhưng tôi đang làm việc trên một pro mac cuốn sách, và bản cập nhật mới nhất được cập nhật mac Java 1.6, và tôi chỉ chuyển trên các tùy chọn Java của tôi là 1,6.

EDIT: Tôi cũng nhận được thông báo sau trong nhật ký Tomcat, nhưng tôi nghĩ rằng tôi đã nhận được nó trước và tôi không nghĩ rằng nó có liên quan, nhưng chỉ trong trường hợp:

INFO: Starting Servlet Engine: Apache Tomcat/7.0.14 
Jul 6, 2011 11:59:55 AM org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(/Users/bw/Documents/workspace2/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/core/WEB-INF/lib/servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 

EDIT: Rất tiếc - không thấy nhận xét của bạn. Đây là danh sách của WEB-INF.

b-ws-macbook-pro:lib bw$ ls -ltr 
total 13456 
-rw-r--r-- 1 bw staff 62983 May 14 09:26 activation-1.1.jar 
-rw-r--r-- 1 bw staff 53082 May 14 09:26 spring-asm-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 60686 May 14 09:26 commons-logging-1.1.1.jar 
-rw-r--r-- 1 bw staff 61379 May 14 09:26 spring-oxm-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 4467 May 14 09:26 aopalliance-1.0.jar 
-rw-r--r-- 1 bw staff 100870 May 14 09:26 spring-context-support-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 62086 May 14 09:26 commons-pool-1.3.jar 
-rw-r--r-- 1 bw staff 169752 May 14 09:26 spring-expression-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 175412 May 14 09:27 spring-webmvc-portlet-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 121757 May 14 09:27 commons-dbcp-1.2.2.jar 
-rw-r--r-- 1 bw staff 321190 May 14 09:27 spring-aop-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 231922 May 14 09:27 spring-tx-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 334327 May 14 09:27 spring-orm-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 371792 May 14 09:27 mybatis-2.3.5.jar 
-rw-r--r-- 1 bw staff 382442 May 14 09:27 spring-core-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 418977 May 14 09:27 spring-webmvc-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 388864 May 14 09:27 mail-1.4.jar 
-rw-r--r-- 1 bw staff 395587 May 14 09:27 spring-web-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 668861 May 14 09:27 spring-context-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 555410 May 14 09:27 spring-beans-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 385712 May 14 09:27 spring-jdbc-3.0.5.RELEASE.jar 
-rw-r--r-- 1 bw staff 512707 May 14 09:27 mysql-connector-java-5.0.5.jar 
-rw-r--r-- 1 bw staff 610790 May 14 09:27 c3p0-0.9.1.2.jar 
-rw-r--r-- 1 bw staff 391834 May 14 09:27 log4j-1.2.15.jar 

EDIT: Xin cảm ơn, Christian. Đó là kỳ lạ, tuy nhiên, vì tôi không có tập tin đó trong lọ của tôi dù sao, và tôi làm liệt kê nó như cung cấp:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    <scope>provided</scope> 
</dependency> 

Tôi chắc rằng tôi đang thiếu một cái gì đó ở đây ..

EDIT : Hmm .. bây giờ Tomcat thậm chí không thể tìm thấy applicationContext. Có gì đó kỳ lạ xảy ra với thiết lập của tôi, tôi nghĩ vậy.

+0

Thông điệp về servlet-api-2.5.jar xảy ra bởi vì đó là file jar phải được cung cấp bởi các container servlet , tức là Tomcat, chứ không phải bởi ứng dụng. WEB-INF/lib của bạn không được chứa tệp đó. Tuy nhiên, bạn có thể cần nó để biên dịch ứng dụng của mình. Trong Maven, bạn có thể sử dụng phạm vi 'được cung cấp' cho phụ thuộc servlet-api. Nhưng bạn cũng có thể giữ tập tin, bởi vì Tomcat chỉ đơn giản là bỏ qua và bỏ qua các tập tin. –

+0

Bạn có thể thêm danh sách thư mục của WEB-INF/lib không? –

+0

Gah. Tôi đã sửa nó, nhưng tôi thực sự không biết làm thế nào. Tôi đọc bài đăng này http://stackoverflow.com/questions/4777026/classnotfoundexception-dispatcherservlet-when-launching-tomcat-maven-dependencie và thấy rằng tôi đã có cùng một điều - một vấn đề được liệt kê với bản dựng trong 'điểm đánh dấu 'pane. Tôi chạy nhanh chóng sửa chữa nó gợi ý và bây giờ tất cả mọi thứ đang làm việc một lần nữa. Như tôi đã nói, tôi đã không chạm vào nó từ một vài ngày trước. Dường như đôi khi nó cũng bị lẫn lộn. 6 giờ sau .. Cảm ơn lời đề nghị của bạn, các bạn .. – Bruce

Trả lời

2

Gah. Tôi đã sửa nó, nhưng tôi thực sự không biết làm thế nào. Tôi đọc bài này ClassNotFoundException DispatcherServlet when launching Tomcat (Maven dependencies not copied to wtpwebapps) và thấy rằng tôi đã có cùng một điều - một vấn đề được liệt kê với xây dựng trong ngăn 'đánh dấu'. Tôi chạy nhanh chóng sửa chữa nó gợi ý và bây giờ tất cả mọi thứ đang làm việc một lần nữa. Như tôi đã nói, tôi đã không chạm vào nó từ vài ngày trước. Dường như đôi khi nó cũng bị lẫn lộn. 6 giờ sau .. Cảm ơn lời đề nghị của các bạn.

1

Thay đổi không gian tên trong dao.xml từ

http://www.springframework.org/schema/tx/spring-tx-2.0.xsd 

để

http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 

(và có lẽ mùa xuân-đậu quá)

+0

Cảm ơn bạn đã đề xuất. Thật không may nó xuất hiện để làm cho không có sự khác biệt. Tôi đã thực hiện các thay đổi, xây dựng ứng dụng một cách sạch sẽ, thông minh hơn cho máy chủ. Cùng một vấn đề. – Bruce

+0

Hmm, bạn có phiên bản nào khác của bình xuân-tx trên đường dẫn lớp không? –

+0

Tôi không chắc chắn. Làm thế nào tôi sẽ thấy classpath của máy chủ tomcat mà tôi đang chạy trong nhật thực? Tôi nghĩ rằng nó sẽ chỉ sử dụng các lọ bên trong WEB-INF/lib, và chỉ có một bình xuân-tx ở đó? – Bruce

4

Để tham khảo trong tương lai:

Có thể bạn đã quên một số phụ thuộc spring-XXX.

Por Ví dụ, trong tầm kiểm soát maven nếu bạn có sự phụ thuộc liên quan:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-XXX</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 

Trân

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