001    package com.ochafik.lang;
002    
003    import java.net.MalformedURLException;
004    import java.net.URL;
005    import java.net.URLDecoder;
006    
007    public class ClassUtils {
008            public static URL getClassPath(Class<?> c) {
009                    String classFile = c.getName().replace('.', '/') + ".class";
010                    URL url = c.getClassLoader().getResource(classFile);
011                    if (url == null)
012                            return null;
013                    
014                    if (url.getProtocol().equals("jar")) {
015                            String urlFile = url.getFile();
016                            int i = urlFile.indexOf("!");
017                            if (i > 0) {
018                                    try {
019                                            URL jarURL = new URL(URLDecoder.decode(urlFile.substring(0, i), "UTF-8"));
020                                            return jarURL;
021                                    } catch (Exception ex) {
022                                            ex.printStackTrace();
023                                    }
024                            }
025                    }
026                    String urlString = url.toString();
027                    if (urlString.endsWith(classFile)) {
028                            try {
029                                    return new URL(urlString.substring(0, urlString.length() - classFile.length()));
030                            } catch (MalformedURLException e) {
031                                    e.printStackTrace();
032                            }
033                    }
034                    return null;
035            }
036    }