获取JAVA路径,包括CLASSPATH外的路径_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3249 | 回复: 0   主题: 获取JAVA路径,包括CLASSPATH外的路径        下一篇 
ding
版主
等级:中尉
经验:440
发帖:12
精华:0
注册:2015-6-30
状态:离线
发送短消息息给ding 加好友    发送短消息息给ding 发消息
发表于: IP:您无权察看 2015-12-18 17:29:46 | [全部帖] [楼主帖] 楼主

归纳一些网上取JAVA路径的方法:


注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。

得到classpath和当前类的绝对路径的一些方法

获得CLASSPATH之外路径的方法:


URL base = this.getClass().getResource("");
 //先获得本类的所在位置,如/home/popeye/testjava/build/classes/net/ String path = new File(base.getFile(), "……/……/……/"+name).getCanonicalPath();
 //就可以得到/home/popeye/testjava/name

    

下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。

    1.FileTest.class.getResource("")

    得到的是当前类FileTest.class文件的URI目录。不包括自己!

    如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

    2.FileTest.class.getResource("/")

    得到的是当前的classpath的绝对URI路径。

    如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

    3.Thread.currentThread().getContextClassLoader().getResource("")

    得到的也是当前ClassPath的绝对URI路径。

    如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

    4.FileTest.class.getClassLoader().getResource("")

    得到的也是当前ClassPath的绝对URI路径。

    如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

    5.ClassLoader.getSystemResource("")

    得到的也是当前ClassPath的绝对URI路径。

    如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

    

我推荐使用Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法。

    

在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。这样,我们只需要提供相对于Web应用程序

根目录的路径,就可以构建出定位资源的绝对路径。

    

注意点:

1.尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径。这是一颗定时炸弹,随时可能要你的命。

2.尽量使用URI形式的绝对路径资源。它可以很容易的转变为URI,URL,File对象。

3.尽量使用相对classpath的相对路径。不要使用绝对路径。使用上面ClassLoaderUtil类的public static URL getExtendResource(String 

relativePath)方法已经能够使用相对于classpath的相对路径定位所有位置的资源。

4.绝对不要使用硬编码的绝对路径。因为,我们完全可以使用ClassLoader类的getResource("")方法得到当前classpath的绝对路径。


使用硬编码的绝对路径是完全没有必要的!它一定会让你死的很难看!程序将无法移植!如果你一定要指定一个绝对路径,那么使用配置文件,也比硬编码要

好得多!

当然,我还是推荐你使用程序得到classpath的绝对路径来拼资源的绝对路径










赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论