未编译的jar工作但编译不起作用

时间:2015-03-13 16:37:46

标签: java eclipse jar

所以在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)

为什么它不起作用,我该如何解决?

1 个答案:

答案 0 :(得分:2)

正如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

如果您需要网址,则可以使用getResource而不是getResourceAsStream检索网址。

请注意,您的代码必须编译为运行 - Eclipse每次保存时都会默认编译它。