java - 未编译的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 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/

相关文章:

java - 在 Debug模式下安装 OFBiz 挂起

java - Hibernate 组合实体

java - microsoft azure 中 StorageAccounts 的模型对象

java - 从 Instagram 中提取主题标签和提及

java - Intellij 封装 JavaFx 应用程序

java - 如何启动需要提升权限的 .jar?

class - 是否可以在没有整个项目的情况下重新编译单个 .java Java 文件?

java - 如何制作横向的上下文菜单?

java - 默认获取android手机号码

Java Eclipse 在 64 位机器上导入 32 位 DLL