[英]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.