0

我有一个使用第三方应用程序的 Java 项目。我将许可证文件(.lic 格式)存储在资源文件夹中。运行 Ant 脚本后,它将将此文件复制到 /lib/jar 目录中,因为它将项目汇总到 Jar 文件中以在服务器上使用。这是我在实时运行系统时需要访问文件的地方。这是文件夹结构的外观

MyProject
  src
    package
      AccessingClass.java
  resources
    File.lic
  lib
    jar
      File.lic (upon copy from Ant)

我不确定执行此操作的最佳方法,因此除了我一直在尝试的方法之外的任何建议都可能会有所帮助。第 3 方项目在 License.setLicense() 之类的类中有一个方法,该方法可以将字符串带到位置或文件的 InputStream。

我一直在为它提供一个 InputStream,但在调用 getClass().getResourceAsStream() 时总是得到一个空值。这是我尝试过的一切:

  • getClass().getResourceAsStream("../../../lib/jar/File.lic"); getClass().getResourceAsStream("/File.lic");

作为备份,我也尝试了(对于本地构建,我想我会尝试资源文件夹):

  • getClass().getResourceAsStream("../../../resources/File.lic"); getClass().getResourceAsStream("/File.lic");

是否有更好的方法来执行此操作?或者有人能告诉我为什么我正在尝试失败?提前谢谢。

4

2 回答 2

0

首先,您需要确保JAR在您的类路径中添加了

下面应该工作。

  InputStream inputStream = 
    getClass().getClassLoader().getResourceAsStream("/resources/File.lic");

假设File.lic放置在 jar 的根文件夹中。

于 2012-11-20T17:37:04.410 回答
0

您是独立运行此代码还是在 IDE 环境中运行此代码看起来像类路径问题。如果您在命令提示符下运行,则必须将类路径设置为 lib 目录,如果在 ide 中确保资源目录位于类路径中。

于 2012-11-20T18:01:40.663 回答