我需要在我的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技术。
非常感谢
答案 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>