首页 文章

SAXParseException:找不到元素'definitions'的声明

提问于
浏览
1

我对camunda和DMN都很陌生 . 我试图在spring-boot中运行DMN示例 . Here is the link例如我想在我的机器上运行 .

这是我的pom依赖项,

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <camunda.version>7.4.0</camunda.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- camunda DMN Engine -->
    <dependency>
        <groupId>org.camunda.bpm.dmn</groupId>
        <artifactId>camunda-engine-dmn-bom</artifactId>
        <version>${camunda.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>

    <dependency>
        <groupId>org.camunda.bpm.dmn</groupId>
        <artifactId>camunda-engine-dmn</artifactId>
        <version>${camunda.version}</version>
    </dependency>
</dependencies>

当我运行它时显示以下stacktrace

引起:org.xml.sax.SAXParseException:cvc-elt.1:找不到元素'definitions'的声明 . at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java: 1906)com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:746)at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl . java:379)com的com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl $ NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:605) . sun.com.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3138)at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ PrologDriver.next(XMLDocumentScannerImpl.java:880 )com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117) )com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) )com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) )com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)at com.sun.org.apache.xerces.internal.jaxp . DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)位于org.springframework.beans.factory文件中的org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76) . (xmlBeanDefinitionReader.java: 429)在org.springframework.beans的org.springframework.beans.factory文件中的org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)位于org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions的org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)中的.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) (AbstractBeanDefinitionReader.java:217)org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(Abst位于org.springframework.context的org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromImportedResources(ConfigurationClassBeanDefinitionReader.java:346)org.springframework.context.anfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:142)中的ractBeanDefinitionReader.java:188) org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243)中的.annotation.ConringClassBeanDefinitionReader.loadBeanDefinitions )org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273)at atgOrg.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98)org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:678)org.springframework.context.support.AbstractApplicationContext.refresh( AbstractApplicationContext.java:520)org.springframework.boot.SpringApplication.refresh(SpringApplication.java:764)org.springframework.boot.SpringApplication.doRun(SpringApplication.java:357)org.springframework.boot.SpringApplication.run (SpringApplication.java:305)org.springframework.boot.test.SpringApplicationContextLoader.loadContext(SpringApplicationContextLoader.java:98)org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)at org . springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCach eAwareContextLoaderDelegate.java:116)org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)at org org.springframework.test.context.junit4.SpringJUnit4ClassRunner上的org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:228)中的.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) .createTest(SpringJUnit4ClassRunner.java:230)org.springframework.test.context.junit4.SpringJUnit4ClassRunner $ 1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java: 12)在org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)at at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:249)org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)org.junit.runners.ParentRunner $ 3 .run(ParentRunner.java:290)位于org.junit.runners的org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71)org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java)中的.garentRunner.access $ 000(ParentRunner.java:58)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268) :61)atg.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)atg.junit.runners.ParentRunner.run(ParentRunner.java:363)org.springframework.test . org.apache.maven.surefire中的context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193) . junit4.JUnit4Provider.execute(JUnit4Provider.java:283)位于org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider . java:153)org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)atg.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)org.apache .maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

我没有得到的一件事是,在资源中他们在xml文件中有决策模式,并且他们有xsd的URL无法正常工作 .

经过一些;)研究后我找到了this链接,其中给出了xsd url我尝试了但是再次命名空间url不起作用 .

如果我错过了什么,请做评论:)

EDIT

Here is Link to my project

2 回答

  • 1

    在您的示例中,您使用Spring ImportResource注释,该注释用于导入bean定义 . 这就是为什么Spring尝试验证您指定的DMN XML文件并正确失败的原因,因为它的格式不正确 . 删除此line .

    您还要更改dmn file的名称空间,它必须是 http://www.omg.org/spec/DMN/20151101/dmn11.xsd .

    并且resource loading的路径不正确,因为您的类在包内,而DMN文件则不是 . 将其更改为 InputStream inputStream = DishDecider.class.getResourceAsStream("/dish-decision.dmn11.xml"); .

    完成这3个更改后,您的示例应该可行 .

  • 2

    找不到声明元素'定义'

    这个错误意味着读取你的XML文件(哪个?),没有 definitions 标签,而模式规定应该有一个 .

相关问题