散点分,同时我也放在CJSDN与我的Blog上面了
http://www.cjsdn.net/post/view?bid=53&id=133126&sty=1http://iamin.blogdriver.com/iamin/504475.html

解决方案 »

  1.   

    好,不过就是得到得路径结果是经过URLEncode了
    最好再decode回来
      

  2.   

    return java.net.URLDecoder.decode(strURL,"gb2312");
      

  3.   

    没有注意,有中文的问题吗?很少用中文作为Java的开的路径,因此忽略了这个问题,不过,你单纯的这样肯定是有问题的,应当在前面进行decode的,完整的程序附后。
      

  4.   

    package io;import java.net.URL;
    import java.io.*;/**
     * <p>Title: 在类中取得当前文件所在的相对路径与绝对路径</p>
     *
     * <p>Description: 在类中取得当前文件所在的相对路径与绝对路径</p>
     *
     * <p>Copyright: Copyright (c) 1997 - 2005</p>
     *
     * <p>Company: Beyond DayBreak Office</p>
     *
     * @author YuLimin
     * @version 1.0
     */
    public class GetClassPath
    {
        public GetClassPath()
        {
            super();
        }    /**
         * main
         *
         * @param args String[]
         */
        public static void main(String[] args)
        {
            GetClassPath getclasspath = new GetClassPath();
            System.out.println(getclasspath.getClassPath());
        }    /**
         * 在类中取得当前文件所在的相对路径与绝对路径
         *
         * @return String
         */
        public String getClassPath()
        {
            String strClassName = getClass().getName();
            String strPackageName = "";
            if(getClass().getPackage() != null)
            {
                strPackageName = getClass().getPackage().getName();
            }
            System.out.println("ClassName:" + strClassName);
            System.out.println("PackageName:" + strPackageName);        String strClassFileName = "";
            if(!"".equals(strPackageName))
            {
                strClassFileName = strClassName.substring(strPackageName.length() + 1,strClassName.length());
            }
            else
            {
                strClassFileName = strClassName;
            }
            System.out.println("ClassFileName:" + strClassFileName);        URL url = null;
            url = getClass().getResource(strClassFileName + ".class");
            String strURL = url.toString();
            System.out.println(strURL);
            try
            {
                strURL = java.net.URLDecoder.decode(strURL,"UTF-8");
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            strURL = strURL.substring(strURL.indexOf('/') + 1,strURL.lastIndexOf('/'));
            
            return strURL;
        }
    }
      

  5.   

    //测试了下,好象没有问题
    //java 中文包.GetClassPath//package io;
    package 中文包;
    import java.net.URL;
    import java.io.*;/**
     * <p>Title: 在类中取得当前文件所在的相对路径与绝对路径</p>
     *
     * <p>Description: 在类中取得当前文件所在的相对路径与绝对路径</p>
     *
     * <p>Copyright: Copyright (c) 1997 - 2005</p>
     *
     * <p>Company: Beyond DayBreak Office</p>
     *
     * @author YuLimin
     * @version 1.0
     */
    public class GetClassPath
    {
        public GetClassPath()
        {
            super();
        }    /**
         * main
         *
         * @param args String[]
         */
        public static void main(String[] args)
        {
            GetClassPath getclasspath = new GetClassPath();
            System.out.println(getclasspath.getClassPath());
        }    /**
         * 在类中取得当前文件所在的相对路径与绝对路径
         *
         * @return String
         */
        public String getClassPath()
        {
            String strClassName = getClass().getName();
            String strPackageName = "";
            if(getClass().getPackage() != null)
            {
                strPackageName = getClass().getPackage().getName();
            }
            System.out.println("ClassName:" + strClassName);
            System.out.println("PackageName:" + strPackageName);        String strClassFileName = "";
            if(!"".equals(strPackageName))
            {
                strClassFileName = strClassName.substring(strPackageName.length() + 1,strClassName.length());
            }
            else
            {
                strClassFileName = strClassName;
            }
            System.out.println("ClassFileName:" + strClassFileName);        URL url = null;
            url = getClass().getResource(strClassFileName + ".class");
            String strURL = url.toString();
            System.out.println(strURL);
            try
            {
                strURL = java.net.URLDecoder.decode(strURL,"UTF-8");
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            strURL = strURL.substring(strURL.indexOf('/') + 1,strURL.lastIndexOf('/'));        return strURL;
        }
    }
      

  6.   

    希望大家补充一下,准备提为FAQ的,如何?
      

  7.   

    不过,我想很少人用中文名来作包名的吧JDK的版本越来越高支持了而已可能核心上面有改变,要不然1.2.2的都不支持中文包名