Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:导出到JAR后路径名不起作用_Java_Jar_Export - Fatal编程技术网

Java:导出到JAR后路径名不起作用

Java:导出到JAR后路径名不起作用,java,jar,export,Java,Jar,Export,我已经在eclipse中将一个项目导出到一个可运行的JAR中。在我的代码中有几个地方我做了以下工作 String file = "src/Files/..."; loadFile(file); // purely for example 现在项目以JAR的形式出现,这些目录似乎不存在,加载这些文件失败。我很确定我引用的文件都打包在罐子里了。当导出到JAR时,目录是否以任何特定的方式更改?关于如何实现这一点还有其他想法吗?您需要将它们视为类路径资源,而不是本地磁盘文件系统路径。如果将文件打包到J

我已经在eclipse中将一个项目导出到一个可运行的JAR中。在我的代码中有几个地方我做了以下工作

String file = "src/Files/...";
loadFile(file); // purely for example

现在项目以JAR的形式出现,这些目录似乎不存在,加载这些文件失败。我很确定我引用的文件都打包在罐子里了。当导出到JAR时,目录是否以任何特定的方式更改?关于如何实现这一点还有其他想法吗?

您需要将它们视为类路径资源,而不是本地磁盘文件系统路径。如果将文件打包到JAR中,并且不希望依赖于工作目录,那么这将不起作用。JAR中的文件已经是类路径的一部分了

假设您在package
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");
// ...
另见:

您需要将它们视为类路径资源,而不是本地磁盘文件系统路径。如果将文件打包到JAR中,并且不希望依赖于工作目录,那么这将不起作用。JAR中的文件已经是类路径的一部分了

假设您在package
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");
// ...
另见:

您可以在zip程序中打开.jar文件,查看所有导出的文件是否正确。您可能还想看看如何为您的文件路径使用classpath://。这篇文章可能也会有帮助。您可以在zip程序中打开.jar文件,查看所有导出的文件是否正确。您可能还想看看如何为您的文件路径使用classpath://。这篇文章可能也会有帮助。谢谢这适用于所有文件流。如果我需要使用BufferedWriter怎么办?@Charlotte:将InputStreamReader+BufferedReader包装在InputStream周围。使用
InputStreamReader
确实可以从中获得
Reader
。但是,你不能给它写信。根据功能需求,还有其他解决方案。请随便问一个新问题。谢谢。这适用于所有文件流。如果我需要使用BufferedWriter怎么办?@Charlotte:将InputStreamReader+BufferedReader包装在InputStream周围。使用
InputStreamReader
确实可以从中获得
Reader
。但是,你不能给它写信。根据功能需求,还有其他解决方案。请随便问一个新问题。