当前位置: 首页 > 面试题库 >

在jar文件中引用XSD架构

谷翰飞
2023-03-14
问题内容

我有两个架构文件,一个是从另一个导入的。在Eclipse模式中执行代码时找到了,但是从jar模式文件中执行代码时找不到了

这是代码

SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setNamespaceAware(true);
        factory.setValidating(false);

        SchemaFactory schemaFactory = SchemaFactory
                .newInstance("http://www.w3.org/2001/XMLSchema");
        try {
            factory.setSchema(schemaFactory.newSchema(new Source[] {
                    new StreamSource(getClass().getResource("Liso.xsd")
                            .getFile()),
                    new StreamSource(getClass().getResource("LisoXml.xsd")
                            .getFile()) }));
                this.saxParser = factory.newSAXParser();
        } catch (SAXException se) {
            System.out.println("SCHEMA : " + se.getMessage()); // problem in the XSD itself
        }

这是我得到的错误

SCHEMA : schema_reference.4: Failed to read schema document 'file:/C:/Tools/lib/LisoTools.jar!/com/xerox/liso/xml/Liso.xsd', because 1) could not find the do
cument; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.

谢谢


问题答案:

如果Liso.xsd是import
LisoXml.xsd,则只需定义Liso.xsd如下所示的架构工厂就足够了。该api足够聪明,可以加载导入/包含的架构

SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema")
Schema compiledSchema = schemaFactory.newSchema(getClass().getClassLoader().getResource("Liso.xsd"))

我验证了它在1.5和1.6上都能正常工作。在1.6上,如果使用DOM
,也可能会遇到此问题。



 类似资料:
  • 问题内容: 我在引用jar文件中的简单图像时遇到了麻烦。 我有一个包tha包含Java文件我有一个包tha包含图像 在我的java文件中,我引用了这样的图像 但是无法找到该图像。在首播中看起来像这样 前导“ /”和分隔符在Windows中不正确。 我检查了此路径,它在MS Explorer中不起作用。 更新 好的,它在某种程度上可以正常工作,但是图像路径不正确,不是对文件的引用,前导斜杠和%20空

  • 问题内容: 我正在尝试使用以下命令更新现有jar(在本示例中为antlr)中的文件: 但是我收到以下消息 java.util.zip.ZipException:重复条目:java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:175)上的antlr / ANTLRError.class,java.util.jar.JarOut

  • 当我设计炫耀的API服务模型时,我正在研究巨大的yaml模式,并强调了文本。我想将部分保存在另一个文件中,以便具有更大的灵活性和可读性。 在本文档之后,我使用了这部分代码: 在我的文件中,我有这样的东西: 它可以在本地主机上运行,但是我在企业部署服务器上运行我的文件时遇到了以下问题: 组件中的错误解析程序错误.架构.请求.属性.技术数据.$ref 无法解析引用,原因如下: 不可接受 我成功地能够在

  • 问题内容: 我需要能够访问存储在已编译jar文件中的文件。我已经弄清楚了如何将文件添加到项目中,但是如何在代码中引用它呢?如何将文件从jar文件复制到用户硬盘驱动器上的某个位置?我知道有很多方法可以访问文件(FileInputStream,FileReader等),但是我不知道如何查看自身。 问题答案: 您可以使用如下形式: 如果foo.txt位于JAR文件的根目录中,则可以使用: 我相信,假设该

  • 我目前正在使用Java服务包装器。它工作得很好,我可以使用我的可执行jar将其作为服务安装,甚至在将其作为服务安装时传递VM参数。 但由于这将在这里和那里部署,我想知道如何防止人们检索Jar文件中的源文件。这可能吗?我正在考虑将jar文件转换为。exe文件,并将其作为这样的服务安装,因为我发现有几个工具能够做到这一点。但他们似乎不允许我传递VM参数。 有人知道我该怎么做吗?

  • 问题内容: 我刚刚“继承”了一个Java项目,而不是来自Java背景,有时我会有点迷失。Eclipse用于在开发过程中调试和运行应用程序。我已经通过Eclipse成功创建了一个.jar文件,该文件“包含”了所有必需的外部jar,例如Log4J,xmlrpc- server等。然后可以使用以下命令成功运行此大.jar: 我的下一步是使用Ant(版本1.7.1)自动进行构建,因此我不必参与Eclips