问题摘要:如何修改下面的代码,使不受信任的动态加载代码在安全沙箱中运行,而应用程序的其余部分不受限制?为什么URLClassLoader不像它所说的那样处理它?编辑:更新以回应AniB。编辑2:添加了更新的PluginSecurityManager。我的应用程序有一个插件机制,第三方可以提供一个包含实现特定接口(interface)的类的JAR。使用URLClassLoader,我可以加载该类并实例化它,没问题。因为代码可能不受信任,所以我需要防止它行为不端。例如,我在一个单独的线程中运行插件代码,以便在它进入无限循环或时间过长时将其终止。但是试图为他们设置一个安全沙箱,这样他们就不能
问题摘要:如何修改下面的代码,使不受信任的动态加载代码在安全沙箱中运行,而应用程序的其余部分不受限制?为什么URLClassLoader不像它所说的那样处理它?编辑:更新以回应AniB。编辑2:添加了更新的PluginSecurityManager。我的应用程序有一个插件机制,第三方可以提供一个包含实现特定接口(interface)的类的JAR。使用URLClassLoader,我可以加载该类并实例化它,没问题。因为代码可能不受信任,所以我需要防止它行为不端。例如,我在一个单独的线程中运行插件代码,以便在它进入无限循环或时间过长时将其终止。但是试图为他们设置一个安全沙箱,这样他们就不能
我从WhatisthedifferencebetweenClass.getResource()andClassLoader.getResource()?了解到并从自己的代码中,即getClass().getResource("/path/image.png")等同于getClass().getClassLoader().getResource("path/image.png")发帖Cannotreadanimageinjarfile显示使用的问题getClass().getClassLoader().getResource("path/image.png")在可执行的jar文件中返回n
我从WhatisthedifferencebetweenClass.getResource()andClassLoader.getResource()?了解到并从自己的代码中,即getClass().getResource("/path/image.png")等同于getClass().getClassLoader().getResource("path/image.png")发帖Cannotreadanimageinjarfile显示使用的问题getClass().getClassLoader().getResource("path/image.png")在可执行的jar文件中返回n
我有一些代码可以调用..x=getClass().getClassLoader();这会返回null。当我不是从Eclipse而是从命令行启动相同的代码时,它会返回一个类加载器。我可以破解代码来做到这一点......if(getClass().getClassLoader()==null){x=ClassLoader.getSystemClassLoader().getSystemResourceAsStream(loadedPropFileName);}两者都使用相同的JVM编译和运行。(我有99.99%的把握)。有人知道为什么第一个会为类加载器返回null吗?编辑:我的问题是“任何
我有一些代码可以调用..x=getClass().getClassLoader();这会返回null。当我不是从Eclipse而是从命令行启动相同的代码时,它会返回一个类加载器。我可以破解代码来做到这一点......if(getClass().getClassLoader()==null){x=ClassLoader.getSystemClassLoader().getSystemResourceAsStream(loadedPropFileName);}两者都使用相同的JVM编译和运行。(我有99.99%的把握)。有人知道为什么第一个会为类加载器返回null吗?编辑:我的问题是“任何
我想创建一个parent-last/child-first类加载器,例如一个类加载器,它将首先在子类加载器中查找类,然后才委托(delegate)给它的父类加载器来搜索类。澄清:我现在知道要获得完整的ClassLoading分离,我需要使用URLClassLoader之类的东西,将null作为它的父级,这要感谢thisanswer回答我之前的问题但是当前的问题可以帮助我解决这个问题:我的代码+依赖jar正在加载到现有系统中,使用ClassLoader将该系统的ClassLoader设置为其父级(URLClassLoader)该系统使用了一些与我需要的版本不兼容的库(例如,旧版本的Xer
我想创建一个parent-last/child-first类加载器,例如一个类加载器,它将首先在子类加载器中查找类,然后才委托(delegate)给它的父类加载器来搜索类。澄清:我现在知道要获得完整的ClassLoading分离,我需要使用URLClassLoader之类的东西,将null作为它的父级,这要感谢thisanswer回答我之前的问题但是当前的问题可以帮助我解决这个问题:我的代码+依赖jar正在加载到现有系统中,使用ClassLoader将该系统的ClassLoader设置为其父级(URLClassLoader)该系统使用了一些与我需要的版本不兼容的库(例如,旧版本的Xer
使用ServiceLoader的最佳实践是什么?在具有多个类加载器的环境中?该文档建议在初始化时创建并保存单个服务实例:privatestaticServiceLoadercodecSetLoader=ServiceLoader.load(CodecSet.class);这将使用当前上下文类加载器初始化ServiceLoader。现在假设这个片段包含在一个使用Web容器中的共享类加载器加载的类中,并且多个Web应用程序想要定义自己的服务实现。这些不会在上面的代码中得到,甚至有可能使用第一个webapps上下文类加载器初始化加载器并向其他用户提供错误的实现。总是创建一个新的Service
使用ServiceLoader的最佳实践是什么?在具有多个类加载器的环境中?该文档建议在初始化时创建并保存单个服务实例:privatestaticServiceLoadercodecSetLoader=ServiceLoader.load(CodecSet.class);这将使用当前上下文类加载器初始化ServiceLoader。现在假设这个片段包含在一个使用Web容器中的共享类加载器加载的类中,并且多个Web应用程序想要定义自己的服务实现。这些不会在上面的代码中得到,甚至有可能使用第一个webapps上下文类加载器初始化加载器并向其他用户提供错误的实现。总是创建一个新的Service