当前位置: 首页>>代码示例>>Java>>正文


Java URLClassPath类代码示例

本文整理汇总了Java中sun.misc.URLClassPath的典型用法代码示例。如果您正苦于以下问题:Java URLClassPath类的具体用法?Java URLClassPath怎么用?Java URLClassPath使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


URLClassPath类属于sun.misc包,在下文中一共展示了URLClassPath类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: main

import sun.misc.URLClassPath; //导入依赖的package包/类
public static void main(String[] args)
  {
    try
    {
      ServerConfigHelper.initConfig();
      ServerConfigHelper.initLog4j("log4j-test.xml");
      JpaContext.init();
      JarFileService srv = JpaContext.getService(JarFileService.class);
      ReleasedJarFile ff= srv.getFileById(6l);
      URL url =new URL("mem", null, 0, ff.getFileName(), new BytesURLStreamHandler(ff.getContent()));
//      GemliteDeployer.getInstance().deploy(url);
      
      URLClassPath ucp = new URLClassPath(new URL[]{url});
      Object obj =ucp.getResource("gemlite.core.internal.GemliteBuilder");
      System.out.println(obj);
    }
    catch (MalformedURLException e)
    {
      e.printStackTrace();
    }
    
    
  }
 
开发者ID:iisi-nj,项目名称:GemFireLite,代码行数:24,代码来源:JarURLFinderFactory.java

示例2: findClass

import sun.misc.URLClassPath; //导入依赖的package包/类
/**
 * Finds and loads the class with the specified name from the URL search
 * path. Any URLs referring to JAR files are loaded and opened as needed
 * until the class is found.
 *
 * @param name the name of the class
 * @return the resulting class
 * @throws ClassNotFoundException if the class could not be found,
 *                                or if the loader is closed.
 * @throws NullPointerException   if {@code name} is {@code null}.
 */
@Override
@SneakyThrows(ReflectiveOperationException.class)
protected Class<?> findClass(String name)
        throws ClassNotFoundException {
    String path = name.replace('.', '/') + ".class";

    Field ucpField = URLClassLoader.class.getDeclaredField("ucp");
    ucpField.setAccessible(true);
    Resource res = ((URLClassPath) ucpField.get(this)).getResource(path, false);
    if (res != null) {
        try {
            return defineClass(name, res);
        } catch (IOException e) {
            throw new ClassNotFoundException(name, e);
        }
    } else {
        throw new ClassNotFoundException(name);
    }
}
 
开发者ID:yawkat,项目名称:mdep,代码行数:31,代码来源:ParentLastURLClassLoader.java

示例3: JarClassLoader

import sun.misc.URLClassPath; //导入依赖的package包/类
/**
 * @param contents Reference to the JarContents object.
 * @param parent
 * @param factory ASMFactory.
 */
public JarClassLoader(LocateableJarContents<ClassNode> contents, ClassLoader parent, ASMFactory<ClassNode> factory) {
	this.factory = factory;

	ClassLoader _parent = parent;
	if (_parent == null)
		_parent = getClass().getClassLoader();
	myParent = _parent;

	cache = new HashMap<String, Class<?>>();
	fastNodeCache = new HashMap<String, ClassNode>();
	ucp = new URLClassPath(new URL[0]);
	add(contents);

	StackTraceElement e = creator(false);
	System.err.println(
			String.format("Creating new JarClassLoader, parent ClassLoader: %s of %s.%s:%d", myParent, e.getClassName(), e.getMethodName(),
					e.getLineNumber()));
}
 
开发者ID:8BitPlus,项目名称:BitPlus,代码行数:24,代码来源:JarClassLoader.java

示例4: removeURL

import sun.misc.URLClassPath; //导入依赖的package包/类
public static void removeURL(URL url) {
	try {
		Field f = URLClassLoader.class.getDeclaredField("ucp");
		f.setAccessible(true);
		URL[] old = ((URLClassLoader)ClassLoader.getSystemClassLoader()).getURLs();
		URL[] newurls = new URL[old.length - 1];
		for (int i = 0, j = 0; i < old.length; ++i) {
			if (!old[i].equals(url)) {
				newurls[j] = old[i];
				++j;
			}
		}
		f.set(ClassLoader.getSystemClassLoader(), new URLClassPath(newurls));
	}
	catch (Throwable t) {
		throw new RuntimeException("Could not remove " + url + " from the classpath.");
	}
}
 
开发者ID:RobDangerous,项目名称:Jademula,代码行数:19,代码来源:ClassPathHacker.java

示例5: doGetSubLoaderByClassContext

import sun.misc.URLClassPath; //导入依赖的package包/类
private SandboxLoader doGetSubLoaderByClassContext(String clazz) {
	String path = clazz.replace('.', '/').concat(".class");
	for(Entry<URLClassPath, SandboxLoader> e : subLoaderByJar.entrySet()){
		Resource res = e.getKey().getResource(path, false);
		if (res != null)
			return e.getValue();
	}
	
	SandboxLoader subLoader = subLoaderCache.get(clazz);
	if(null != subLoader)
		return subLoader;
	for(String prefix : subLoaderPrefixCache.keySet())
		if(clazz.startsWith(prefix))
			return subLoaderPrefixCache.get(prefix);
	
	
	return null;
}
 
开发者ID:csm,项目名称:java-sandbox,代码行数:19,代码来源:SandboxLoader.java

示例6: URLClassLoader

import sun.misc.URLClassPath; //导入依赖的package包/类
URLClassLoader(URL[] urls, ClassLoader parent,
               AccessControlContext acc) {
    super(parent);
    // this is to make the stack depth consistent with 1.1
    SecurityManager security = System.getSecurityManager();
    if (security != null) {
        security.checkCreateClassLoader();
    }
    ucp = new URLClassPath(urls);
    this.acc = acc;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:12,代码来源:URLClassLoader.java

示例7: URLClassLoader

import sun.misc.URLClassPath; //导入依赖的package包/类
URLClassLoader(URL[] urls, ClassLoader parent,
               AccessControlContext acc) {
    super(parent);
    // this is to make the stack depth consistent with 1.1
    SecurityManager security = System.getSecurityManager();
    if (security != null) {
        security.checkCreateClassLoader();
    }
    this.acc = acc;
    ucp = new URLClassPath(urls, acc);
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:12,代码来源:URLClassLoader.java

示例8: deleteMod

import sun.misc.URLClassPath; //导入依赖的package包/类
private void deleteMod(File mod) {
    if (mod.delete())
        return;

    try {
        ClassLoader cl = DepLoader.class.getClassLoader();
        URL url = mod.toURI().toURL();
        Field f_ucp = URLClassLoader.class.getDeclaredField("ucp");
        Field f_loaders = URLClassPath.class.getDeclaredField("loaders");
        Field f_lmap = URLClassPath.class.getDeclaredField("lmap");
        f_ucp.setAccessible(true);
        f_loaders.setAccessible(true);
        f_lmap.setAccessible(true);

        URLClassPath ucp = (URLClassPath) f_ucp.get(cl);
        Closeable loader = ((Map<String, Closeable>) f_lmap.get(ucp)).remove(URLUtil.urlNoFragString(url));
        if (loader != null) {
            loader.close();
            ((List<?>) f_loaders.get(ucp)).remove(loader);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    if (!mod.delete()) {
        mod.deleteOnExit();
        String msg = owner + " was unable to delete file " + mod.getPath() + " the game will now try to delete it on exit. If this dialog appears again, delete it manually.";
        System.err.println(msg);
        if (!GraphicsEnvironment.isHeadless())
            JOptionPane.showMessageDialog(null, msg, "An update error has occured", JOptionPane.ERROR_MESSAGE);

        System.exit(1);
    }
}
 
开发者ID:4Space,项目名称:4Space-5,代码行数:35,代码来源:DepLoader.java

示例9: changeClassLoaderToSupportWhiteSpacesRepository

import sun.misc.URLClassPath; //导入依赖的package包/类
/**
 * Uses reflection to replace all white spaces in the ClassLoader's URLs to %20.
 */
static void changeClassLoaderToSupportWhiteSpacesRepository(ClassLoader mavenClassLoader)
        throws SecurityException, NoSuchFieldException, IllegalArgumentException,
        IllegalAccessException, MalformedURLException {
    // Get the class of the ClassLoader, this should be RealmClassLoader.
    Class mavenClassLoaderClass = mavenClassLoader.getClass();

    // Get the super class of RealmClassLoader, this should be URLClassLoader.
    Class clazz2 = mavenClassLoaderClass.getSuperclass();

    // get the ucp field of URLClassLoader that holds the URLs
    Field ucpField = clazz2.getDeclaredField("ucp");

    // make this field accessible
    if (!ucpField.isAccessible()) {
        ucpField.setAccessible(true);
    }

    // get the value of the field, this should be URLClassPath.
    Object value = ucpField.get(mavenClassLoader);

    // get the URLs
    URLClassPath urlClassPath = (URLClassPath) value;
    URL[] urls = urlClassPath.getURLs();
    URL[] urls2 = new URL[urls.length];

    // replace the white spaces of all URLs with %20
    for (int i = 0; i < urls.length; i++) {
        String path = urls[i].toExternalForm();
        path = path.replaceAll(" ", "%20");
        urls2[i] = new URL(path);
    }

    // create the new URLClassPath
    URLClassPath uRLClassPath2 = new URLClassPath(urls2);

    // update the ucf field value 
    ucpField.set(mavenClassLoader, uRLClassPath2);
}
 
开发者ID:Gigaspaces,项目名称:xap-openspaces,代码行数:42,代码来源:Utils.java

示例10: HijackingClassLoader

import sun.misc.URLClassPath; //导入依赖的package包/类
/**
 * @param urls
 * @param parent
 * @param factory
 */
public HijackingClassLoader(URL[] urls, ClassLoader parent,
    URLStreamHandlerFactory factory) {
    super(urls, parent, factory);
    ucp = new URLClassPath(urls, factory);
    acc = AccessController.getContext();
}
 
开发者ID:petablox-project,项目名称:petablox,代码行数:12,代码来源:HijackingClassLoader.java

示例11: deleteMod

import sun.misc.URLClassPath; //导入依赖的package包/类
private void deleteMod(File mod)
{
    if (mod.delete())
        return;

    try
    {
        ClassLoader cl = DepLoader.class.getClassLoader();
        URL url = mod.toURI().toURL();
        Field f_ucp = URLClassLoader.class.getDeclaredField("ucp");
        Field f_loaders = URLClassPath.class.getDeclaredField("loaders");
        Field f_lmap = URLClassPath.class.getDeclaredField("lmap");
        f_ucp.setAccessible(true);
        f_loaders.setAccessible(true);
        f_lmap.setAccessible(true);

        URLClassPath ucp = (URLClassPath) f_ucp.get(cl);
        Closeable loader = ((Map<String, Closeable>) f_lmap.get(ucp)).remove(URLUtil.urlNoFragString(url));
        if (loader != null)
        {
            loader.close();
            ((List<?>) f_loaders.get(ucp)).remove(loader);
        }
    } catch (Exception e)
    {
        e.printStackTrace();
    }

    if (!mod.delete())
    {
        mod.deleteOnExit();
        String msg = owner + " was unable to delete file " + mod.getPath() + " the game will now try to delete it on exit. If this dialog appears again, delete it manually.";
        System.err.println(msg);
        if (!GraphicsEnvironment.isHeadless())
            JOptionPane.showMessageDialog(null, msg, "An update error has occured", JOptionPane.ERROR_MESSAGE);

        System.exit(1);
    }
}
 
开发者ID:AnimeniacYuuto,项目名称:InventoryTools,代码行数:40,代码来源:DepLoader.java

示例12: insertURL

import sun.misc.URLClassPath; //导入依赖的package包/类
/**
 * 加入新的來源位址到開頭。
 * <p>
 * 依賴{@link URLClassLoader}及{@link URLClassPath}內部結構,驗證Java版本:
 * <ul>
 * <li>Oracle Java SE 8u20</li>
 * </ul>
 * </p>
 *
 * @param classLoader 要加入新位址的類別載入器
 * @param newURL 新的類別來源位址
 */
public static void insertURL(URLClassLoader classLoader, URL newURL) {
    synchronized (classLoader) {
        try {
            // Modified from http://pastebin.com/SNgmGMwq
            URLClassPath ucp = (URLClassPath) URLClassLoader_ucpField.get(classLoader);
            ucp.addURL(newURL);
            @SuppressWarnings("unchecked")
            List<URL> path = (List<URL>) URLClassPath_pathField.get(ucp);
            @SuppressWarnings("unchecked")
            List<Object> loaders = (List<Object>) URLClassPath_loadersField.get(ucp);
            // 強制建立loader (要將loader排到首位)
            URLClassPath_getLoaderMethod.invoke(ucp, path.size() - 1);
            if (path.size() != loaders.size()) {
                throw new RuntimeException("Ehh... they should be same size!!");
            } else {
                int lastIndex = path.size() - 1;
                path.add(0, path.remove(lastIndex));
                loaders.add(0, loaders.remove(lastIndex));
            }
        } catch (ReflectiveOperationException e) {
            throw new RuntimeException(e);
        }
    }
    /*
    for (URL p : path) {
        System.out.println("ext path: " + p);
    }
    for (Object l : loaders) {
        URL url = (URL) URLClassPath_Loader_getBaseURLMethod.invoke(l);
        System.out.println("ext loader: " + url);
    }
     */
}
 
开发者ID:SkyLandTW,项目名称:JXTN,代码行数:46,代码来源:URLClassLoaderExt.java

示例13: deleteFile

import sun.misc.URLClassPath; //导入依赖的package包/类
@SuppressWarnings("unchecked")
public static boolean deleteFile(File file)
{
    if (file.delete())
    {
        return true;
    }

    try
    {
        ClassLoader cl = RemoveHandler.class.getClassLoader();
        URL url = file.toURI().toURL();
        Field f_ucp = URLClassLoader.class.getDeclaredField("ucp");
        Field f_loaders = URLClassPath.class.getDeclaredField("loaders");
        Field f_lmap = URLClassPath.class.getDeclaredField("lmap");
        f_ucp.setAccessible(true);
        f_loaders.setAccessible(true);
        f_lmap.setAccessible(true);

        URLClassPath ucp = (URLClassPath) f_ucp.get(cl);
        Closeable loader = ((Map<String, Closeable>) f_lmap.get(ucp)).remove(URLUtil.urlNoFragString(url));
        if (loader != null)
        {
            loader.close();
            ((List<?>) f_loaders.get(ucp)).remove(loader);
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

    return file.delete();
}
 
开发者ID:Dynious,项目名称:VersionChecker,代码行数:35,代码来源:RemoveHandler.java

示例14: initForClosingJars

import sun.misc.URLClassPath; //导入依赖的package包/类
/**
 *Sets up variables used in closing a loader's jar files.
 *@throws NoSuchFieldException in case a field of interest is not found where expected
 */
private static void initForClosingJars() throws NoSuchFieldException {
    jcpField = getField(URLClassLoader.class, URLCLASSLOADER_UCP_FIELD_NAME);
    loadersField = getField(URLClassPath.class, URLCLASSPATH_LOADERS_FIELD_NAME);
    urlsField = getField(URLClassPath.class, URLCLASSPATH_URLS_FIELD_NAME);
    lmapField = getField(URLClassPath.class, URLCLASSPATH_LMAP_FIELD_NAME);
    pathField = getField(URLClassPath.class, URLCLASSPATH_PATH_FIELD_NAME);
    
    
    jarLoaderInnerClass = getInnerClass(URLClassPath.class, URLCLASSPATH_JARLOADER_INNER_CLASS_NAME);
    jarFileField = getField(jarLoaderInnerClass, URLCLASSPATH_JARLOADER_JARFILE_FIELD_NAME);
}
 
开发者ID:NCIP,项目名称:common-security-module,代码行数:16,代码来源:ClassLoaderUtil.java

示例15: ReloadableClassLoader

import sun.misc.URLClassPath; //导入依赖的package包/类
public ReloadableClassLoader(URL[] urls, String classesDir) throws IOException, ClassNotFoundException {
    super(urls, ReloadableClassLoader.class.getClassLoader());
    this.ucp = new URLClassPath(urls);
    this.classesDir = classesDir;

    List<Path> paths = FileMatcher.match(classesDir, "glob:*.class");
    logger.trace("Loading classes: ", paths);
    for (Path path : paths) {
        loadClass(normalizeClassname(path.toString()));
    }
}
 
开发者ID:gzlabs,项目名称:hightide,代码行数:12,代码来源:ReloadableClassLoader.java


注:本文中的sun.misc.URLClassPath类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。