Java 部署项目时如何更改文件的相对路径
这是我的项目结构: 在netbeans中执行程序时,我使用以下路径加载xosc文件:Java 部署项目时如何更改文件的相对路径,java,netbeans,deployment,filepath,executable-jar,Java,Netbeans,Deployment,Filepath,Executable Jar,这是我的项目结构: 在netbeans中执行程序时,我使用以下路径加载xosc文件: XMLReaderWriter.getXMLDocument("./src/Vorlagen/OpenScenario/OS_TemplateVTD.xosc"); 这是我的XMLReaderWriter中的函数: public static Document getXMLDocument(String absoluteFileName) throws Exception { DocumentBu
XMLReaderWriter.getXMLDocument("./src/Vorlagen/OpenScenario/OS_TemplateVTD.xosc");
这是我的XMLReaderWriter中的函数:
public static Document getXMLDocument(String absoluteFileName) throws Exception {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new File(absoluteFileName)); //parse odr file into document
return document;
}
它之所以有效,是因为我在项目内部工作。但在部署项目并执行jar文件后,我会出现以下错误:
问题是,当我执行jar文件时,它试图从“dist”顺序而不是实际文件夹加载文件。在执行jar文件时,如何在dist order中部署文件以访问文件?
/src/Vorlagen/OpenScenario/OS_TemplateVTD.xosc
是从当前文件夹开始的相对路径。因为您是在Netbeans中启动项目的,所以当前文件夹是项目的根文件夹
因此,有几种选择:
InputStream in = this.getClass().getResourceAsStream("/" + filename);
Document document = documentBuilder.parse(in);
pathToConfig
),使用-DpathToConfig=/full/path/to/file
启动java,然后在java中使用该属性的值
String filename = System.getProperty("pathToConfig");
如果将文件放入
src\main\resources
中,它将自动打包到jar中。以及相对于src\main\resources
应该使用的文件的路径。比如,如果您使用src\main\resources\vorlagen\openScenario\OS_TemplateVTD.xosc
,那么在java代码中,您需要使用vorlagen\openScenario\OS_TemplateVTD.xosc
什么是XMLReaderWriter?那是你写的课吗?如果是,请编辑您的问题并显示getXMLDocument方法的源。@VGR yes我更新了问题如何将文件作为类路径资源打包到jar中。由于“getResourceAsStream”方法找不到我的文件,因此inputstream的值为null