获取apusic下class文件路径的问题

情况描述:

将某一个java类和其他一些类打成jar包放到了Apusic-6.0\lib下,然后分别用两种模式启动apusic:一种是直接启动apusic服务器,一种是将apusic配置到eclipse中启动。

对于这两种启动模式在此类中直接用getResource("/");时得到的是不同的路径;

第一种启动得到的结果是file:/APUSIC_DOMAIN/domains/mydomain/./
第二种启动得到的是file:/APUSIC_DOMAIN/classes/

这个问题也许是apusic类加载机制的某些问题,也许另有其他原因,不知道在其他的应用服务器下是否会出现同样的问题。

由于需求是获取绝对路径,并且是在所有的应用之前获取,因此没办法使用Servlet的getRealPath(String str)方法,更不用考虑Session与Application的相关方法了。提炼一下需求,就是无论当前工程当前路径是什么,都要获取到同样的一个绝对路径。而且又要避开上述问题。

搜索下,发现有位仁兄早就解决了这个问题,通过一个封装好的Path类,直接获取某个class文件的绝对路径,并且经过测试,无论何种情况下,都是绝对正宗的绝对路径,此Path类的代码如下所示:

在调用配置文件时,不再使用“getResource("/");”方法,而是直接调用此Path类的“getPathFromClass”方法,完成绝对路径的获取,最终,无论何种情况下,系统获取的都是实际的类文件的实际绝对路径,此问题解决。

本文参考Path类实现,出处:http://long5534.iteye.com/blog/107497

你可能感兴趣的:(eclipse,应用服务器,.net,Security,sun)