Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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可以工作,但编译的jar不能工作';行不通_Java_Eclipse_Jar - Fatal编程技术网

Java 未编译的jar可以工作,但编译的jar不能工作';行不通

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

因此,在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\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中并更改路径。如果我回答了您的问题,请接受答案,并在投票箭头下方打勾:)