paip兼容windows与linux的java类根目录路径的方法

paip兼容windows与linux的java类根目录路径的方法

1.只有 pathx.class.getResource("")或者pathx.class.getResource(".")才是在linux,widdows下获取的路径一致。。都是class的实现路径..不过没方法获得root path..
其他的都不一致---widdows得到class root, linux却是/root/。。。
比如class.getResource("/")以及class.getClassLoader().getResource

2.只好从中截取路径了。。
但是在com下的路径截取却得到pinyin*.jar的奇怪路径,估计java的bug。。com.attilax.io这个路径走好着了.
public static String classPath()
    {
        //URL u=new URL()
        //jeoig linux hamyar cheng leig ***.jar! le ..
    //    return new File(  classpathGetter.class.getResource("").getPath()).getParent() ;  
        String path = pathx.class.getResource("").getPath();
        int index=path.lastIndexOf("/");
        String path_sub=path.substring(0, index-15);
        return path_sub;

    }

    作者Attilax  艾龙,  EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attilax


///////////////mmseg中的获取路径
RL url = Dictionary.class.getClassLoader().getResource("data");
却是可以的。。
但是使用 getResource(""); 却不行,得到的/root/ in linux..
getResource("com")也很离谱,居然是pinyin*.jar

////////////////在内jar 还是classes 的类都是一样的效果...

public class pathx {

    /**linux
     * file:/root/

file:/root/
null
file:/root/
-------1-------
file:/root/
null
file:/root/
-------2-------
file:/root/
null
file:/root/
----
file:/imServer/WebRoot/WEB-INF/classes/com/attilax/io/
file:/root/
file:/imServer/WebRoot/WEB-INF/classes/com/attilax/io/


------//////////////windows
file:/D:/workspace/imServer/WebRoot/WEB-INF/classes/
null
file:/D:/workspace/imServer/WebRoot/WEB-INF/classes/
-------1-------
file:/D:/workspace/imServer/WebRoot/WEB-INF/classes/
null
file:/D:/workspace/imServer/WebRoot/WEB-INF/classes/
-------2-------
file:/D:/workspace/imServer/WebRoot/WEB-INF/classes/
null
file:/D:/workspace/imServer/WebRoot/WEB-INF/classes/
----
file:/D:/workspace/imServer/WebRoot/WEB-INF/classes/com/attilax/io/
file:/D:/workspace/imServer/WebRoot/WEB-INF/classes/
file:/D:/workspace/imServer/WebRoot/WEB-INF/classes/com/attilax/io/

     * @param args
     */
    public static void main(String[] args) {
           System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));  
           System.out.println(Thread.currentThread().getContextClassLoader().getResource("/"));  
            
           System.out.println(Thread.currentThread().getContextClassLoader().getResource("."));  
            
           System.out.println("-------1-------");
            System.out.println(pathx.class.getClassLoader().getResource(""));
            System.out.println(pathx.class.getClassLoader().getResource("/"));
            System.out.println(pathx.class.getClassLoader().getResource("."));
            System.out.println("-------2-------");
            System.out.println(ClassLoader.getSystemResource(""));  
            System.out.println(ClassLoader.getSystemResource("/"));  
            System.out.println(ClassLoader.getSystemResource("."));
            System.out.println("----");
            System.out.println(pathx.class.getResource(""));  
            System.out.println(pathx.class.getResource("/"));
            System.out.println(pathx.class.getResource("."));
            
            System.out.println(pathx.class.getResource("").getPath());  

          
    }

}

原文地址:https://www.cnblogs.com/attilax/p/5964052.html