Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.security.CodeSource;
- import java.security.ProtectionDomain;
- /**
- * Creted on 2018/2/8.
- */
- public class TestGetClassFromWhichJarLocation {
- public static void main(String[] args) {
- try {
- Class<?> cls = Class.forName("java.lang.String");
- URL classLocation = getClassLocation(cls);
- System.out.println(classLocation);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- public static URL getClassLocation(final Class cls) {
- if (cls == null) {
- throw new IllegalArgumentException("null input: cls");
- }
- URL result = null;
- final String clsAsResource = cls.getName().replace('.', '/').concat(".class");
- final ProtectionDomain pd = cls.getProtectionDomain();
- if (pd != null) {
- final CodeSource cs = pd.getCodeSource();
- if (cs != null) result = cs.getLocation();
- if (result != null) {
- if ("file".equals(result.getProtocol())) {
- try {
- if (result.toExternalForm().endsWith(".jar") || result.toExternalForm().endsWith(".zip"))
- result = new URL("jar:".concat(result.toExternalForm()).concat("!/").concat(clsAsResource));
- else if (new File(result.getFile()).isDirectory()) {
- result = new URL(result, clsAsResource);
- }
- } catch (MalformedURLException ignore) {
- ignore.printStackTrace();
- }
- }
- }
- }
- if (result == null) {
- final ClassLoader clsLoader = cls.getClassLoader();
- result = clsLoader != null ?
- clsLoader.getResource(clsAsResource) :
- ClassLoader.getSystemResource(clsAsResource);
- }
- return result;
- }
- }
Add Comment
Please, Sign In to add comment