【问题标题】:How to read a file inside a jar's resources from ouside the jar如何从jar外部读取jar资源中的文件
【发布时间】:2013-12-08 16:44:20
【问题描述】:

我在其类路径中的 abc.jar 中有一个文件 X.json。 abc.jar 中有一个方法 readFile 读取文件为

URL url = Abc.class.getClassLoader().getResource("X.json");  
File file = new File(url.toURI());*

如果我从 jar 的上下文(即 abc.jar 中某个文件中的 main 方法)运行它,它会很好读

但是当从 abc.jar 外部从其他代码调用 readFile 时,它​​会失败并显示 java.lang.IllegalArgumentException: URI is not hierarchical

如何通过从 jar 的上下文之外调用方法 readFile 来获取 File 对象?

【问题讨论】:

  • 你为什么不发布堆栈跟踪?
  • 一个文件代表文件系统上的一个路径。 jar 中的文件不在文件系统上。因此,无论您从哪个类执行此代码,它都没有任何意义,也不会工作。要读取类路径中 jar 中的文件,请使用 Class[Loader].getResourceAsStream()

标签: java file embedded-resource


【解决方案1】:

到部署时,这些资源将变为。在这种情况下,资源必须由URL 而不是File 访问。查看标签的info page,了解形成URL的方法。

【讨论】:

    猜你喜欢
    • 2019-12-20
    • 2021-11-21
    相关资源
    最近更新 更多