相对路径不';在Eclipse上导出到runabble jar时不起作用

相对路径不';在Eclipse上导出到runabble jar时不起作用,eclipse,jar,path,relative-path,runnable,Eclipse,Jar,Path,Relative Path,Runnable,我正在Eclipse中做一个Java项目。我正在使用一些相对路径,例如: File htmlTemplateFile = new File("src/templateGeno2Pheno.html"); 而不是绝对路径: File htmlTemplateFile = new File("/Users/.../Documents/workspace/SeqAnalysis/src/templateGeno2Pheno.html"); 当我用Eclipse运行它时,一切都很好,但是一旦我将它导

我正在Eclipse中做一个Java项目。我正在使用一些相对路径,例如:

File htmlTemplateFile = new File("src/templateGeno2Pheno.html");
而不是绝对路径:

File htmlTemplateFile = new File("/Users/.../Documents/workspace/SeqAnalysis/src/templateGeno2Pheno.html");
当我用Eclipse运行它时,一切都很好,但是一旦我将它导出到一个可运行的JAR并执行它,它就不工作了

这是我的文件夹结构:

这是我的密码:

在打包到JAR中之后,所有内容,包括HTML模板,都被压缩到该JAR中,因此文件系统路径对您不起作用。Java没有像浏览器/html那样的文件寻址系统

一个选项是使用
ClassLoader.getResourceAsStream
API加载这些html模板

将代码更改为:

InputStream stream = this.getClass().getClassLoader().getResourceAsStream("/templateGeno2Pheno.html");
String htmlString = IOUtils.toString(stream);
IOUtils来自apachecommons的IO库


HTH

请在您的问题中输入实际代码,而不是图像。您好,我现在明白了,但在更改行后我仍然有一个错误:空流?还是空?空流表示路径/templateGeno2Pheno.html正确,但文件为空。Null表示路径不完全正确。我记不清地址是怎么写的。您可以尝试只使用
templateGeno2Pheno.html
更新的答案来使用
ClassLoader.getResourceAsStream
。试着用那个。ClassLoader.getResourceAsStream将
/templateGeno2Pheno.html
路径解释为src文件夹根目录下的绝对路径(即classpath),而
Class.getResourceAsStream
将其解释为类所在位置的相对路径。见此: