2013-01-21 34 views
0

找到静态文件,我试图用一个jar文件本身是在另一个Web项目的Web应用程序。在我使用Eclipse导出到jar功能创建的jar中,我已经将一个csv文件存储在一个文件夹中。要在罐子使用代码中的相对路径访问它使用在罐子

MyClass.class.getResource(ApplicationConstants.ALIASESFILE).getPath(); 

,当我部署(GlassFish中),并使用该项目作为一个单独的应用程序能正常工作。但是,当我使用同一个从另一个项目中,它提供了路径如下图所示

D:\javaProjects\AutomodeGS_Prachi\lib\internal\RESTWSGS.jar!\aliases\aliases.csv 

我得到NOTFOUND exception.What文件可能是错误的?

+0

更好的,你可以在资源文件夹csv文件。如果您在部署后需要更改,它可能如何? – vels4j

+0

我们计划再次生成jar。这是仅用于 – kavita

回答

2

getResource()方法返回一个“ jar:“U RL。该URL的路径组件不是普通的文件系统路径名,也不能使用Java的文件类直接打开。

简单的方式做,这是使用Class.getResourceAsStream(...)打开流。如果您需要的JAR条目的“标识”,用Class.getResource(...),但随后打开使用URL.openStream()流。

+0

非常感谢! – kavita

2

这个工作从GlassFish的罚款可能是因为GlassFish中爆炸了文件系统上的罐子,使您的CSV文件acutually一个文件到文件系统,

,如果你试图从它失败,因为另一个项目阅读包含文件的罐子在classpath中是很好,但CSV文件下的jar文件,它不再是File

你可以把它读作流

InputStream is = MyClass.class.getResourceAsStream(ApplicationConstants.ALIASESFILE); 
+0

我将检查和应对 – kavita

+0

上面一样的答案因此对于有用性越来越多的静态文件中的一个!非常感谢 – kavita

+0

你没有注意到时间或答案张贴:) –