1

在进行 maven 构建时,得到 403 响应 liquibase。使用命令“mvn clean install -Pinitdb”构建项目。整个日志是

liquibase.exception.ChangeLogParseException:解析 db/schema_updates/DIRECTTOBILL-29676/changelog.xml 的第 6 行第 122 行时出错:schema_reference.4:无法读取架构文档'http://www.liquibase.org/xml/ns/dbchangelog /dbchangelog-2.0.xsd',因为 1) 找不到文件;2) 文件无法读取;3) 文档的根元素不是 .
    在 liquibase.parser.xml.XMLChangeLogParser.parse(XMLChangeLogParser.java:78)
    在 liquibase.parser.ChangeLogParser.parse(ChangeLogParser.java:28)
    在 liquibase.parser.xml.XMLChangeLogHandler.handleIncludedChangeLog(XMLChangeLogHandler.java:319)
    在 liquibase.parser.xml.XMLChangeLogHandler.startElement(XMLChangeLogHandler.java:94)
    在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
    在 com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
    在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(XMLSchemaValidator.java:774)
    在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351)
    在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
    在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
    在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
    在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
    在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
    在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
    在 com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
    在 liquibase.parser.xml.XMLChangeLogParser.parse(XMLChangeLogParser.java:70)
    在 liquibase.parser.ChangeLogParser.parse(ChangeLogParser.java:28)
    在 liquibase.Liquibase.update(Liquibase.java:105)
    在 org.liquibase.maven.plugins.LiquibaseUpdate.doUpdate(LiquibaseUpdate.java:19)
    在 org.liquibase.maven.plugins.AbstractLiquibaseUpdateMojo.performLiquibaseTask(AbstractLiquibaseUpdateMojo.java:23)
    在 org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute(AbstractLiquibaseMojo.java:221)
    在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
    在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
    在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
    在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
    在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
    在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
    在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
    在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
    在 org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
    在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    在 java.lang.reflect.Method.invoke(Method.java:498)
    在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
引起:org.xml.sax.SAXParseException;行号:6;列号:122;schema_reference.4:未能读取架构文档“http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd”,因为 1) 找不到该文档;2) 文件无法读取;3) 文档的根元素不是 .
    在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
    在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.warning(ErrorHandlerWrapper.java:99)
    在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:392)
    在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:306)
    在 com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4160)
    在 com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaWarning(XSDHandler.java:4151)
    在 com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument1(XSDHandler.java:2493)
    在 com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2191)
    在 com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:576)
    在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:613)
    在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.findSchemaGrammar(XMLSchemaValidator.java:2446)
    在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1767)
    在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:740)
    在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
    在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:613)
    在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3132)
    在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:852)
    在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
    在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
    在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
    在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
    在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
    在 com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
    在 liquibase.parser.xml.XMLChangeLogParser.parse(XMLChangeLogParser.java:70)
    ... 43 更多
原因:java.io.IOException:服务器返回 HTTP 响应代码:403 用于 URL:http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
    在 sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894)
    在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
    在 com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:647)
    在 com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:148)
    在 com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SchemaParsingConfig.java:582)
    在 com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SchemaParsingConfig.java:685)
    在 com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaDOMParser.parse(SchemaDOMParser.java:530)
    在 com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2179)

只需卷曲到相同的网址就可以正常工作

4

2 回答 2

1

我遇到了同样的问题,不得不为它创建一个解决方法。毕竟,只是为了让您知道,liquibase 已经确定了这个问题,他们正在努力解决这个问题。

他们刚刚发送了这封电子邮件:

我们正在积极与我们的新托管服务提供商合作,以解决一些 Liquibase 用户在访问模式文件时遇到的问题(例如http://www.liquibase.org/xml/ns/dbchangelog)。

一旦此问题得到解决,我们将通过电子邮件和社交媒体通知您。感谢您在我们更新网站和托管服务时的耐心等待。

但是,我所做的解决方法:

  1. 首先,这是一个 curl 问题,我不知道原因,但是使用 gradlew 执行此操作不起作用,但是,从 curl 命令可以执行此操作。
  2. 直接从终端进行 curl 并将结果保存在 xsd 文件中:
curl http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd > dbchangelog-3.5.xsd`
  1. 在我的变更日志 liquisabe 文件中,我确实指向了我之前创建的文件。
<databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog dbchangelog-3.5.xsd
    http://www.liquibase.org/xml/ns/dbchangelog-ext  http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">`
于 2020-05-15T14:10:45.870 回答
0

由于我的服务捆绑了 liquibase 版本 1.9.5.0 和我创建的 liquibase.xml 引用“ http://www.liquibase.org/xml/ns/dbchangelog/2.0” ,我收到了这个错误,这可能是原因它不允许我的服务通过。将 liquibase.xml 中的引用更改回 1.9 可以顺利进行。

于 2020-06-26T12:42:24.443 回答