gpt4 book ai didi

java - 如何从 JAR 中获取文件引用

转载 作者:行者123 更新时间:2023-12-01 22:19:15 25 4
gpt4 key购买 nike

首先,我想补充一点,我可能已经尝试了关于此问题的所有建议解决方案,但仍然无法使其正常工作。

所以这是我的问题...

我有一个用于解析 XML 文件的应用程序。我选择一个 xml 文件(源),然后根据 xsd 对其进行验证(这是我无法访问的 JAR 中的文件)。从我的 IDE 中运行代码效果很好:

xsd = new File(getClass().getResourceAsStream("xsds/2014/schema.xsd").getFile());
System.out.println(xsd.getAbsolutePath());
//returns: C:\Users\xxx\Desktop\Documents\NetBeansProjects\JavaXMLValidator\build\classes\app\xsds\2014\schema.xsd

但是当我通过应用程序构建 JAR 文件并运行它时,我无法获取对该文件的引用。当我从 JAR 中运行应用程序时,我得到以下信息:

//returns: C:\Users\xxx\Desktop\Documents\NetBeansProjects\JavaXMLValidator\dist\file:C:\Users\xxx\Desktop\Documents\NetBeansProjects\JavaXMLValidator\dist\JavaXMLValidator.jar!\app\xsds\2014\schema.xsd  

路径看起来不错(我认为),但我无法在代码中获得对我的文件的正确引用:

Source schemaFile = new StreamSource(xsd);
Schema schema = null;
try {
schema = factory.newSchema(schemaFile);
} catch (SAXException ex) {
JOptionPane.showMessageDialog(null, "Invalid XML Schema Selected!!!\n Exception: "+this.getStackTraceString(ex," "));
return;
}

我得到了异常(exception):

SAXParseException: schema_reference.4: Failed to read schema document 
'C:\Users\xxx\Desktop\Documents\NetBeansProjects\JavaXMLValidator\dist\file:C:\Users\xxx\Desktop\Documents\NetBeansProjects\JavaXMLValidator\dist\JavaXMLValidator.jar!\app\xsds\2014\schema.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>
........

任何人都可以建议一种方法,让我可以正确引用 JAR 中的 xsd 文件吗?

非常感谢您的帮助

最佳答案

正如 MadProgrammer 所说,使用 URL:

URL xsd = getClass().getResource("xsds/2014/schema.xsd");
Schema schema = null;
try {
schema = factory.newSchema(xsd);
} catch (SAXException ex) {
JOptionPane.showMessageDialog(null, "Invalid XML Schema Selected!!!\n Exception: "+this.getStackTraceString(ex," "));
return;
}

关于java - 如何从 JAR 中获取文件引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com