Почему Eclipse не может разрешить схему spring-dwr? - PullRequest
12 голосов
/ 23 мая 2009

Eclipse показывает следующие ошибки в applicationContext.xml моей * Spring:

cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dwr:configuration'.   myappservlet-servlet.xml    MyApp/src/main/webapp/WEB-INF   line 23 XML Problem
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dwr:controller'.  myappservlet-servlet.xml    MyApp/src/main/webapp/WEB-INF   line 21 XML Problem
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dwr:remote'.  myappservlet-servlet.xml    MyApp/src/main/webapp/WEB-INF   line 41 XML Problem

Когда я наводю указатель мыши на ошибку позиции, она также говорит:

    - schema_reference.4: Failed to read schema document 'http://www.directwebremoting.org/
 schema/spring-dwr-3.0.xsd', because 1) could not find the document; 2) the document could not be 
 read; 3) the root element of the document is not <xsd:schema>.

Я подтвердил, что корневой элемент на самом деле . Когда я использую автозаполнение, набирая Eclipse правильно показывает мне различные опции, такие как , и т. Д. Как может ли Eclipse знать это, не читая схему?

Я использую множество различных пространств имен без проблем; схема DWR является единственной, которая не разрешается. Вот декларация:

<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
              http://www.springframework.org/schema/aop 
              http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context-2.5.xsd
              http://www.directwebremoting.org/schema/spring-dwr
              http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd"
    default-autowire="byName">

У меня есть последний DWR 3.0.0.116.rc1 в моем classpath. Если я открою банку с DWR, я найду META-INF / spring.handlers , содержащий:

http\://www.directwebremoting.org/schema/spring-dwr=org.directwebremoting.spring.DwrAnnotationNamespaceHandler

и META-INF / spring.schemas , содержащие:

http\://www.directwebremoting.org/schema/spring-dwr-2.0.xsd=org/directwebremoting/spring/spring-dwr-2.0.xsd
http\://www.directwebremoting.org/schema/spring-dwr-3.0.xsd=org/directwebremoting/spring/spring-dwr-3.0.xsd

Побег из толстой кишки немного сбил меня с толку, но я предполагаю, что все правильно, иначе у каждого DWR будет нарушен.

До того, как я получил эту конкретную схему в режиме реального времени с веб-сайта DWR, но я немного удивился, когда моя производственная система вышла из строя из-за сбоя сайта DWR.

Ответы [ 3 ]

11 голосов
/ 02 июля 2009

Вы можете попробовать добавить указанный пользователем вклад в каталог в Eclipse. В Окно-> Настройки-> XML-> Каталог XML выберите Заданные пользователем записи , а затем кнопку Добавить .

Затем вы можете добавить детали для схемы (вы можете скопировать файл локально в случае разрыва соединения). Eclipse получит доступ к схеме во время проверки.

2 голосов
/ 23 июля 2009

Это распространенная проблема при использовании Eclipse в автономном режиме. Он пытается получить схему из сети. Когда он не может найти его, это указывает на ошибку проверки.

Я просто игнорирую эти ошибки. Когда вы вернетесь в сеть, очистите проект, и они исчезнут.

2 голосов
/ 25 мая 2009

Я не уверен, что ваш вопрос здесь. Вы, кажется, сами отвечаете на это в последнем абзаце - сайт DWR отключается, проверка схемы в Eclipse завершается неудачно. Обратите внимание, что Eclipse (даже с плагином Spring IDE) не использует META-INF / spring.schemas для разрешения пространств имен, что делается платформой Eclipse. Если схема не может быть найдена в месте расположения схемы, вы получите эти ошибки.

Что касается автозаполнения, Eclipse будет по-прежнему обеспечивать это, выводя из существующих структур в вашем документе, если он не может найти схему.

Это не проблема в самом приложении, поскольку Spring будет использовать файл META-INF / spring.schemas для разрешения схем из JAR.

...