【问题标题】:How to enable the (JAR) file to access an external folder that is needed in the application?如何使(JAR)文件能够访问应用程序所需的外部文件夹?
【发布时间】:2011-01-13 22:02:06
【问题描述】:

请,我的 Java 应用程序应该访问包含其他文件的外部文件夹。它在 Netbeans IDE 下运行良好,但当我单独运行 (jar) 文件时却不行。我认为将外部所需的文件夹包含在与 jar 文件相同的路径中可以解决问题,但遗憾的是它给了我相同的结果。

非常感谢任何想法或建议!

提前致谢!

P.S:我正在使用以下命令:java -jar MyJarFile.jar

[添加]

我的文件结构:

在项目的主文件夹中,我有以下内容:

构建
build.xml
数据:此文件夹内是我的日志文件 (log.dat)。
dist:这个文件夹里面是我的 (.Jar) 文件。
manifest.mf
nbproject
自述文件
源代码

访问文件的代码如下:

File logs_File = new File("Data" + File.separator + "log.dat");

在我的 NB 中,它再次以这种方式工作,但在我午餐 .Jar 文件时却不是。

[更新]

据了解,我一直在尝试以下方法:

现在访问文件的文件如下所示: File logs_File = new File(this.getClass().getResource("/Data/log.dat").toString());

然后我将 Data 文件夹复制到以下目录:
src
构建/类/
dist

在主目录中

它仍然没有看到文件。虽然这一次甚至 netbeans 都无法找到该文件。

提前感谢您的帮助

【问题讨论】:

  • 在同一路径中包含外部文件夹... - 这并没有多大意义。首先-您面临的确切错误是什么?是否有异常,或者外部文件夹无法访问?还是...?
  • 外部文件夹无法访问或找不到。

标签: java file-io jar


【解决方案1】:

在没有看到您的代码的情况下,很难有人为您的问题提供准确的答案。您提供的有关 IDE 中正确行为的提示向我表明您在访问文件时可能正在使用相对路径?您是否尝试在失败时打印出您尝试访问的路径?

编辑:

尝试在您的文件上调用getAbsolutePath(),并将结果打印到 STDOUT。然后去你的文件系统中查看文件是否存在。

【讨论】:

  • 是的,我使用了如下的相对路径:“log” + file.seperator + file.dat 其中日志文件夹与项目位于同一文件夹中。不过,Jar 文件位于不同的文件夹中。
  • 是log正上方文件夹中的jar文件吗?如果没有,那是你的问题。
  • 感谢您的笔记! ("log") 文件夹直接位于我的 JAR 文件的上述目录中。将它包含在我的 JAR 文件中或在同一个文件夹中不会得到任何结果。 (如上所述)
  • Jar 文件需要在日志之上,而不是相反。
  • 好吧,我把文件复制到了整个地方,但仍然看不到它。假设从该文件位于项目主目录中的 Data/log.dat 读取。在与 (dist) 本身相同的目录中。
【解决方案2】:

您的项目需要以下结构和代码

【讨论】:

  • 将数据文件夹放在源下,然后File logs_File = new File(this.getClass().getResource("/data/log.dat")); 然后清理并构建它会工作:)
  • File logs_File = new File(this.getClass().getResource("/data/log.dat").toString());我现在没有编译器,检查一下添加toString()它会工作:)
  • 如果您对短信结构不满意,可以使用快照
  • 检查我的更新,我在本地尝试了它的工作:),注意:我现在使用的是 win 机器,所以这里的目录不区分大小写,所以Data 对我有用,我建议你使用代码中的data
  • ok 然后假设你的类名是 Foo 然后将 Main.class 替换为 Foo.class
【解决方案3】:

那么答案如下:

我打印了我的文件的getAbsolutePath();,然后我将我的 (Data) 文件夹与 (JAR) 文件放在了 (dist) 文件夹中。我还必须允许所有用户访问(jar)文件,而不仅仅是管理用户。

[已解决的话题]

感谢社区以及您的所有帮助和关心!

亲切的问候,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 2015-09-19
    相关资源
    最近更新 更多