Java 未编译的jar可以工作,但编译的jar不能工作';行不通
因此,在Eclipse中,此代码起作用:Java 未编译的jar可以工作,但编译的jar不能工作';行不通,java,eclipse,jar,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 s
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\u lock
的文件夹,其中包含accounts.accs
,然后使用以下内容获取文件:
File file = new File("folder_lock" + File.separator + "accounts.accs");
如果您需要将它放在JAR中(导出到JAR中,因为它在src
文件夹中),则从JAR中检索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
而不是getresourceastream
检索URL
请注意,必须编译代码才能运行—默认情况下,每次保存时Eclipse都会编译代码。IDE的工作目录是项目文件夹。它包含
src
文件夹,但是jar没有。您还需要将该资源导出到jar中并更改路径。如果我回答了您的问题,请接受答案,并在投票箭头下方打勾:)