【问题标题】:Java. Read folder from 'resources' while executing JAR: URI is not hierarchical爪哇。执行 JAR 时从“资源”中读取文件夹:URI 不是分层的
【发布时间】:2013-05-14 02:05:24
【问题描述】:

我将一个文件夹 'profiles'(包含语言配置文件,我在执行 JAR 时需要使用)放入 'resources' 文件夹。要阅读它,我会写:

URL langProfilesURL = ClassLoader.getSystemResource("resources/profiles");
File langProfilesDir = new File(langProfilesURL.toURI());

当我在 IDE 中运行时,它工作正常:URL 是 file:/D:/CODING/HappyState/bin/resources/profiles

但是当我执行 HappyState.jar 我得到:

java.lang.IllegalArgumentException: 

URL 是 jar:file:/D:/HappyState.jar!/resources/profiles

您能告诉我该怎么做才能正确读取“配置文件”文件夹吗?非常感谢!

【问题讨论】:

  • 要从 jar 中读取资源,请使用 ClassLoader.getResourceAsStream()

标签: java url jar classloader executable-jar


【解决方案1】:

改用Class.getResource() 方法。这可以处理所有情况,无论该项目是在平面文件系统上还是在 jar 文件中,甚至在远程 http 位置上。 但是您应该注意,这种方法不允许您执行与 File(实际上是文件夹)对象相同的操作。

【讨论】:

  • “Class.getResource()”是什么意思?类不包含这样的方法
  • 这是否意味着:Parser.class.getResource("resources/profiles"),其中 Parser 是我编写此代码的类?谢谢!
  • 是的。但是,您很可能会为 resources/profiles 文件夹中的特定文件调用此方法,而不是文件夹本身。
  • 不幸的是,它为 URL 返回null。请给我另一个建议好吗?实际上,我需要整个文件夹,因为其中一个库使用它。
猜你喜欢
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
相关资源
最近更新 更多