草庐IT

classloader

全部标签

java - Java Bootstrap 类加载器是如何加载的?

这个问题在这里已经有了答案:WhatloadstheJavasystemclassloader?(4个回答)关闭5年前。在Java中,据说所有的类都由类加载器加载。首先,引导类加载器会加载所有rt.jar类。我仍然很困惑,因为Classloader也是一个类,所以谁会加载这个BootStrapClassloader? 最佳答案 答案:当JVM启动时,会运行一段特殊的机器代码来加载系统类加载器。此机器代码称为Bootstrap/Primordial(或有时-Null)类加载器。它根本不是一个Java类,就像所有其他类加载器一样。引导类

Java 安全 : Sandboxing plugins loaded via URLClassLoader

问题摘要:如何修改下面的代码,使不受信任的动态加载代码在安全沙箱中运行,而应用程序的其余部分不受限制?为什么URLClassLoader不像它所说的那样处理它?编辑:更新以回应AniB。编辑2:添加了更新的PluginSecurityManager。我的应用程序有一个插件机制,第三方可以提供一个包含实现特定接口(interface)的类的JAR。使用URLClassLoader,我可以加载该类并实例化它,没问题。因为代码可能不受信任,所以我需要防止它行为不端。例如,我在一个单独的线程中运行插件代码,以便在它进入无限循环或时间过长时将其终止。但是试图为他们设置一个安全沙箱,这样他们就不能

Java 安全 : Sandboxing plugins loaded via URLClassLoader

问题摘要:如何修改下面的代码,使不受信任的动态加载代码在安全沙箱中运行,而应用程序的其余部分不受限制?为什么URLClassLoader不像它所说的那样处理它?编辑:更新以回应AniB。编辑2:添加了更新的PluginSecurityManager。我的应用程序有一个插件机制,第三方可以提供一个包含实现特定接口(interface)的类的JAR。使用URLClassLoader,我可以加载该类并实例化它,没问题。因为代码可能不受信任,所以我需要防止它行为不端。例如,我在一个单独的线程中运行插件代码,以便在它进入无限循环或时间过长时将其终止。但是试图为他们设置一个安全沙箱,这样他们就不能

java - 可执行 jar 中 Class.getResource() 和 ClassLoader.getResource() 的奇怪行为

我从WhatisthedifferencebetweenClass.getResource()andClassLoader.getResource()?了解到并从自己的代码中,即getClass().getResource("/path/image.png")等同于getClass().getClassLoader().getResource("path/image.png")发帖Cannotreadanimageinjarfile显示使用的问题getClass().getClassLoader().getResource("path/image.png")在可执行的jar文件中返回n

java - 可执行 jar 中 Class.getResource() 和 ClassLoader.getResource() 的奇怪行为

我从WhatisthedifferencebetweenClass.getResource()andClassLoader.getResource()?了解到并从自己的代码中,即getClass().getResource("/path/image.png")等同于getClass().getClassLoader().getResource("path/image.png")发帖Cannotreadanimageinjarfile显示使用的问题getClass().getClassLoader().getResource("path/image.png")在可执行的jar文件中返回n

java - getClass().getClassLoader() 为空,为什么?

我有一些代码可以调用..x=getClass().getClassLoader();这会返回null。当我不是从Eclipse而是从命令行启动相同的代码时,它会返回一个类加载器。我可以破解代码来做到这一点......if(getClass().getClassLoader()==null){x=ClassLoader.getSystemClassLoader().getSystemResourceAsStream(loadedPropFileName);}两者都使用相同的JVM编译和运行。(我有99.99%的把握)。有人知道为什么第一个会为类加载器返回null吗?编辑:我的问题是“任何

java - getClass().getClassLoader() 为空,为什么?

我有一些代码可以调用..x=getClass().getClassLoader();这会返回null。当我不是从Eclipse而是从命令行启动相同的代码时,它会返回一个类加载器。我可以破解代码来做到这一点......if(getClass().getClassLoader()==null){x=ClassLoader.getSystemClassLoader().getSystemResourceAsStream(loadedPropFileName);}两者都使用相同的JVM编译和运行。(我有99.99%的把握)。有人知道为什么第一个会为类加载器返回null吗?编辑:我的问题是“任何

java - 如何在 Java 中创建 parent-last/child-first ClassLoader,或如何覆盖已在父 CL 中加载的旧 Xerces 版本?

我想创建一个parent-last/child-first类加载器,例如一个类加载器,它将首先在子类加载器中查找类,然后才委托(delegate)给它的父类加载器来搜索类。澄清:我现在知道要获得完整的ClassLoading分离,我需要使用URLClassLoader之类的东西,将null作为它的父级,这要感谢thisanswer回答我之前的问题但是当前的问题可以帮助我解决这个问题:我的代码+依赖jar正在加载到现有系统中,使用ClassLoader将该系统的ClassLoader设置为其父级(URLClassLoader)该系统使用了一些与我需要的版本不兼容的库(例如,旧版本的Xer

java - 如何在 Java 中创建 parent-last/child-first ClassLoader,或如何覆盖已在父 CL 中加载的旧 Xerces 版本?

我想创建一个parent-last/child-first类加载器,例如一个类加载器,它将首先在子类加载器中查找类,然后才委托(delegate)给它的父类加载器来搜索类。澄清:我现在知道要获得完整的ClassLoading分离,我需要使用URLClassLoader之类的东西,将null作为它的父级,这要感谢thisanswer回答我之前的问题但是当前的问题可以帮助我解决这个问题:我的代码+依赖jar正在加载到现有系统中,使用ClassLoader将该系统的ClassLoader设置为其父级(URLClassLoader)该系统使用了一些与我需要的版本不兼容的库(例如,旧版本的Xer

具有多个类加载器的 Java ServiceLoader

使用ServiceLoader的最佳实践是什么?在具有多个类加载器的环境中?该文档建议在初始化时创建并保存单个服务实例:privatestaticServiceLoadercodecSetLoader=ServiceLoader.load(CodecSet.class);这将使用当前上下文类加载器初始化ServiceLoader。现在假设这个片段包含在一个使用Web容器中的共享类加载器加载的类中,并且多个Web应用程序想要定义自己的服务实现。这些不会在上面的代码中得到,甚至有可能使用第一个webapps上下文类加载器初始化加载器并向其他用户提供错误的实现。总是创建一个新的Service