org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: Die passende Platzhalter ist streng
org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'drools:grid-node'.
Ich bin immer diese Fehlermeldung, wenn ich einen grid-Knoten und ksession, um meine spring-xml. Ich habe einige suchen und wie es aussieht ein classpath-Problem. Was Abhängigkeit vermisse ich hier ?
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xmlns:drools="http://drools.org/schema/drools-spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://drools.org/schema/drools-spring org/drools/container/spring
http://drools.org/schema/drools-spring org/drools/container/spring/drools-spring-1.2.0.xsd">
<drools:grid-node id="node1"/>
<drools:ksession id="ksession1" type="stateful" kbase="kbase1" node="node1" />
Meine pom.xml hat die folgenden für Drools.
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-camel</artifactId>
<version>${drools.version}</version>
<exclusions>
<!-- This ensures that we use the latest version of Spring jars and not
the one that comes with drools.version. -->
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
</exclusion>
<exclusion>
<artifactId>camel-xstream</artifactId>
<groupId>org.apache.camel</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>knowledge-api</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>${drools.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-spring</artifactId>
<version>${drools.version}</version>
</dependency>
InformationsquelleAutor Soumya Simanta | 2012-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Fehler wird ausgegeben, weil die Drools XSD kann nicht gefunden werden. In dieser Kommentar in der Drools-Benutzer-Liste, es wird festgestellt, dass die XSD ' s sind nicht öffentlich verfügbar, und die
xsi:schemaLocation
- Attribut in der XML-mapping von XSD zuhttp://drools.org/schema/drools-spring org/drools/container/spring/drools-spring-1.2.0.xsd
, die nicht behoben werden, um die richtige XSD.Feder automatisch Umgang mit dem XSD-Auflösung angesichts der
xmlns:drools="http://drools.org/schema/drools-spring"
Attribut. Einer der Drools Gläser werden sollte, einschließlich einerMETA-INF/spring.handlers
Datei Definition die XSD-mapping für diedrools
namespace. Etwas entlang der Linien von :Sollte automatisch Umgang mit der XSD-Datei enthalten, in der Drools-Gläser.
Entfernen Sie die letzten zwei Zeilen deines
xsi:schemaLocation
- Attribut, damit die Feder automatisch beheben XSD.Einige weiterführende links:
Natürlich könnte man auch extrahieren, dass XSD-Code von der JAR-Datei, legen Sie Sie in ein zugängliches Verzeichnis, aus Ihren Klassenpfad ein und verwenden Sie eine classpath-relative URL in
xsi:schemaLocation
.Durch die Art und Weise, es ist wohl ein copy&paste-Fehler, aber Ihre
<beans>
- element fehlt das schließende tag.BEARBEITEN : Es scheint, dass Drools war nicht die Bereitstellung der
spring.handlers
richtig (zumindest im Dezember 2010, sehen Drools + Frühling ohne internet ). Müssen Sie möglicherweise zu Graben, durch die Gläser zu Holen Sie sich die XSD-und die Referenz direkt inxsi:schemaLocation
.Haben Sie versucht, die Platzierung der xsd (nennen wir es
drools-spring.xsd
) neben IhremapplicationContext.xml
und Referenzierung es direkt inxsi:schemaLocation
wie diese:http://drools.org/schema/drools-spring org/drools/container/spring drools-spring.xsd
? Darüber hinaus sind Ihnen die Erzeugung einer einzigen JAR-Datei aus den ganzen Abhängigkeiten und Modul? Wenn dies der Fall ist, dieMETA-INF/spring.handlers
können Sie die Datei immer überschrieben werden. Wenn es der Fall ist, finden Sie unter Problem beim starten Spring-Anwendung aus JavaIch bin mit Maven erstellen einer war-Datei. Ich habe Folgendes in meine Feder XML. drools.org/schema/drools-spring drools.org/schema/drools-spring-1.5.0.xsd. Hinzufügen <Abhängigkeit> <groupId>org.drools</groupId> <artifactId>drools-Frühling</artifactId> <version>${sabbert.version}</version> </Abhängigkeit> bekommt drools-spring-5.3.0.Final.jar das hat den META-INF/spring.Handler. Ich löschte meine maven cache (.m2/repository) und wie es aussieht funktioniert jetzt (zumindest an der Laufzeit habe ich nicht bekommen, eine Ausnahme.) Aber ich bin noch immer ein Fehler-marker auf Eclipse.
InformationsquelleAutor Xavi López
Als für der Fehler-marker in Eclipse: ich habe nur ein workaround, und ich bezweifle, dass es eine wirkliche Lösung für dieses.
Als Xavi Lopez erklärte in seiner Antwort akzeptiert, es ist eine
spring-handlers
Datei in die drools-Frühling jar (für michdrools-spring-5.3.0.Final.jar
), unter META-INF. Dies bedeutet jedoch nicht, die Referenz auf eine xsd-Datei (obwohl die xsd-Dateien befinden sich in diesem sehr jar), aber enthält dies:Wie Sie sehen können, es definiert eine handler-Klasse für jede version der xsd. Dies funktioniert gut mit Feder zur Laufzeit, aber ich habe nie gesehen, es funktioniert mit jeder version von Eclipse (noch die Spring Tool Suite).
Ich immer am Ende ausschalten Validierung für die xsd-Dateien im Projekt, die für Ihre Bequemlichkeit - geht so:
(Ich habe auch versucht Verweis auf die xsd-direkt aus der spring-Bean-definition, xml -, aber es hat nicht funktioniert. Als handler definiert in der
spring-handlers
Datei funktioniert zur Laufzeit, wäre dies nicht eine bessere Lösung IMHO.)InformationsquelleAutor booFar