如何将资源添加到jar文件中

时间:2011-08-14 15:33:56

标签: java resources jar

我需要在我的jar中添加一个exel文件,因此它是可移植的。我知道答案是使用getClass()。getResource ....但我不知道如何使用这段代码。

我的src文件夹中的exel文件包含我的类文件,它在netbeans中工作,但在我在另一台PC上打开jar文件时却没有。我得到filenotfound异常

这是我用过的代码:

public class WindageLogic {

  //....
  public void GetValues() throws Exception
    {


    File exel=new File("src/Calculator/table1.xls");

     Workbook w1; //reads from file

     //reads from file
     w1 = Workbook.getWorkbook(exel);

有人可以给我实现的代码,这将允许我从jar应用程序访问这个文件,我花了整个周末在互联网上查找东西,但我不明白我如何使用这些getresource技术。

非常感谢

2 个答案:

答案 0 :(得分:2)

如果您的excel文件是资源,那么您不能使用File来操纵它,而是使用资源,我相信它是只读的 - 您确定这是您想要的吗?做?您可以改为加载命令行String,告诉程序从哪里开始查找文件,或者创建一个属性文件,告诉您首先要查看的位置。

编辑1
如果您使用的是JExcel,则可以拨打Workbook.getWorkbook(java.io.InputStream is)并通过类的getResourceAsStream(...)方法将您的资源作为Stream。

如,

  public void GetValues() throws Exception   {
     Workbook w1; //reads from file
     w1 = Workbook.getWorkbook(WindageLogic.class.
          getResourceAsStream("/Calculator/table1.xls") );
     //...

答案 1 :(得分:1)

为了使getClass()。getResource()方法起作用,资源应该在应用程序的类路径中可用(要么打包在一个jar文件中,要么只打包在类路径中包含的磁盘上的文件夹中)。

根据您使用的IDE或代码构建工具,有多种方法可以确保完成。

最简单的方法是将src文件夹放在run classpath java -classpath src:%CLASSPATH% <your.class.name>