2012-11-20 165 views
0

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

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

我不知道要做到这一点,出乎我如何一直在努力将可能是有帮助的其他任何建议的最佳方式。第三方项目在像License.setLicense()这样的类中有一个方法,它可以将字符串带到该位置或文件的InputStream。

我一直在为它提供一个InputStream,但在调用getClass()。getResourceAsStream()时总是得到一个空值。这里是我试过的所有东西:

  • getClass()。getResourceAsStream(“../../../ lib/jar/File.lic”); getClass()。getResourceAsStream(“/ File.lic”);

而且作为备份我还试图(为当地建立我想我会尝试的资源文件夹):

  • 的getClass()的getResourceAsStream(” ../../../资源/File.lic“); getClass()。getResourceAsStream(“/ File.lic”);

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

+0

JAR中的内容(例如,如果解压缩它,文件是否位于?lib/jar?资源?根目录下) – Puce

回答

0

首先,您需要确保将JAR添加到您的课程路径中。

下面应该工作。

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

假设File.lic被放置在罐子的根文件夹中。

+0

但它不在Jar文件夹的根目录中,而是我在上面指定的位置。可以通过直接路径访问它,我只是不确定它会是什么样子 –

+0

@ozpenstillson:它是否在'resources'文件夹中?你的jar结构体没有提及它,你可以使用从 –

0

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

+0

我将lib和resources文件夹添加到本地tomcat服务器上的类路径(首先测试)以及项目构建路径上,仍然接收到null。 –