我已将项目导出到 eclipse 中的可运行 JAR。我的代码中有几个地方做了以下操作。
String file = "src/Files/...";
loadFile(file); // purely for example
现在该项目采用 JAR 形式,这些目录似乎不存在,并且加载这些文件失败。我非常确定我引用的文件已打包在 JAR 中。导出到 JAR 时目录是否会以任何特定方式发生变化?关于如何实现这项工作还有其他想法吗?
最佳答案
您需要将它们视为类路径资源,而不是本地磁盘文件系统路径。当您将文件打包在 JAR 中并且您也不希望依赖于工作目录时,这将不起作用。 JAR 内的文件已经是类路径的一部分。
假设您在com.example
包中有一个foo.txt
文件,那么您可以按如下方式获取它的InputStream
InputStream input = getClass().getResourceAsStream("/com/example/foo.txt");
// ...
或者当您处于静态
上下文中时
InputStream input = SomeClass.class.getResourceAsStream("/com/example/foo.txt");
// ...
或者当你想扫描全局类路径时
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("/com/example/foo.txt");
// ...
另请参阅:
关于Java:导出到 JAR 后路径名不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41163153/