【发布时间】:2019-11-13 19:57:31
【问题描述】:
我想使用specific ClassLoader 在ScriptEngineManager 中加载特定的罐子
此构造函数使用服务提供者机制加载对给定 ClassLoader 可见的 ScriptEngineFactory 的实现。
我尝试创建Classloader时的问题
File file = new File("c:\\myclasses\\"); try { // Convert File to a URL URL url = file.toURI().toURL(); // file:/c:/myclasses/ URL[] urls = new URL[]{url}; // Create a new class loader with the directory ClassLoader cl = new URLClassLoader(urls)
而且我还要上一些不在课堂上的课,例如 Spring
Class cls1 = cl.loadClass("org.springframework.http.HttpStatus");
如何创建一个只包含特定文件夹类的干净类加载器?
编辑
如果不可能,我可以在 groovy 脚本中使用与 Rhino 的 ClassShutter 等效的东西吗?
private static void setJavaClassesVisibleInvisibleSandbox(Context cx) { cx.setClassShutter(new ClassShutter() { public boolean visibleToScripts(String className) { // No Java classes allowed inside scripts
编辑
当尝试@Vinz243 CustomClassLoader 解决方案无法从特定文件夹加载类文件或jar 文件的类,甚至尝试rt.jar
java.lang.SecurityException: Prohibited package name: java.lang
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:662)
at java.lang.ClassLoader.defineClass(ClassLoader.java:761)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at com.CustomClassLoader.loadClass(CustomClassLoader.java:15)
【问题讨论】:
标签: java classloader urlclassloader