所以在 Eclipse 中这段代码可以工作:
String file_path = "accounts.accs";
File file = new File("src/puffinlump/folder_lock/"+file_path);
但是当我将其编译成 JAR 时,我收到此错误:
Error reading file: java.io.FileNotFoundException: lock\src\puffinlump\folder_lock\accounts.accs (The system cannot find the path specified)
为什么它不起作用以及如何修复它?
最佳答案
正如 Obicere 所说,工作目录就是项目目录。您尝试访问 src
文件夹中的某些内容,该文件夹可能在您导出 JAR 的任何位置都不存在。您应该在项目目录中创建一个名为 folder_lock
的文件夹,其中包含 accounts.accs
,然后使用以下命令获取文件:
File file = new File("folder_lock" + File.separator + "accounts.accs");
如果您在 JAR 中需要它(它正在导出到其中,因为它位于 src
文件夹中),则可以从中检索 InputStream
,如下所示:
InputStream stream = getClass().getClassLoader().getResourceAsStream("puffinlump/folder_lock/accounts.accs");
如果您的方法是静态的,请使用
InputStream stream = MyClass.class.getClassLoader().getResourceAsStream("puffinlump/folder_lock/accounts.accs");
相反,用您的类名替换 MyClass
。
如果您需要 URL,可以使用 getResource
而不是 getResourceAsStream
检索 URL。
请注意,您的代码必须经过编译才能运行 - 每次保存时 Eclipse 都会默认编译它。
关于java - 未编译的jar可以工作但编译后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037503/