簡體   English   中英

在jar文件中查找類路徑文件時出錯

[英]error finding class path file in jar file

運行Java應用程序時出現gettine錯誤。 我的應用程序捆綁在一個.jar文件中。 這意味着xsd文件位於.jar文件中。

錯誤:

class path resource [classpath*:myschema.xsd] cannot be opened because it does not exist

錯誤來源:

@Value("classpath*:myschema.xsd")
private Resource xsdFile;

public boolean validateXML()() throws IOException {
    boolean isValidXMLFile = false;

    Source xmlFile = new StreamSource(new File(xmlDataFile));
    SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = null;
    File outXsdFile = new File("autogenpath.xsd");
    InputStream is =xsdFile.getInputStream();
    OutputStream out=new FileOutputStream(outXsdFile);
    IOUtils.copy(is, out);

    try {
        schema = schemaFactory.newSchema(outXsdFile);
    } catch (SAXException e1) {
        e1.printStackTrace();
        isValidXMLFile = false;
        log.debug("Error reading schema " + e1.getMessage());
    }
    try {
        Validator validator = schema.newValidator();
        validator.validate(xmlFile);
        log.debug(xmlFile.getSystemId() + " is valid");
        isValidXMLFile = true;

    } catch (SAXParseException e) {
        isValidXMLFile = false;
        log.debug(xmlFile.getSystemId() + " is NOT valid");
        log.debug("Reason\t\t: " + e.getLocalizedMessage());
        log.debug("Line Number \t: " + e.getLineNumber());
        log.debug("Column Number\t: " + e.getColumnNumber());
        log.debug("Public Id\t: " + e.getPublicId());
    } catch (SAXException e) {
        isValidXMLFile = false;
        log.debug(xmlFile.getSystemId() + " is NOT valid");
        log.debug("Reason\t: " + e.getLocalizedMessage());
    }
    finally{
        try{
        out.close();
        }catch(Exception e){
            e.printStackTrace();

        }
    }
    return isValidXMLFile;
}

嘗試將通話更改為

new File("...")

getClass().getClassLoader().getResource("...")

甚至

getClass().getClassLoader().getResourceStream("...")

打包應用程序時,需要讓類加載器為您獲取文件。

不應該是:

@Value("${classpath}/myschema.xsd")
private Resource xsdFile;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM