classloader - MyClassLoader.defineClass java.lang.SecurityException: Prohibited package name: java.lang -


i try extend classloader. classloader.loadclass is:

 protected synchronized class<?> loadclass(string name, boolean resolve) throws classnotfoundexception {// put "throw"s here clean code below          class<?> result = null;               byte[] bytes = null;             try {                 bytes = getclassfromfs(pathtoclass); //get .class file file system in bytes[]             } catch (filenotfoundexception ex) {                 logger.getlogger(myloader.class.getname()).log(level.severe, null, ex);             } catch (ioexception ex) {                 logger.getlogger(myloader.class.getname()).log(level.severe, null, ex);             }             system.out.println("myloader:мой loadclass загружает класс");             return defineclass(name, bytes, 0, bytes.length); // proplem here !!!          return super.loadclass(name, resolve);  } 

lines in "main" thread

/*first argument - path file. file exist, checked it*/ myclassloader = new myloader("d:\\\\customclassloader\\classx.class", classloader.getsystemclassloader()); classx = (simpleinterface) myclassloader.loadclass("customclassloader.classx",true).newinstance(); </pre> have exception  <pre>exception in thread "main" java.lang.securityexception: prohibited package name: java.lang @ java.lang.classloader.predefineclass(classloader.java:650)     @ java.lang.classloader.defineclass(classloader.java:786)     @ java.lang.classloader.defineclass(classloader.java:635)     @ customclassloader.myloader.loadclass(myloader.java:61)     @ java.lang.classloader.loadclass(classloader.java:357)     @ java.lang.classloader.defineclass1(native method)     @ java.lang.classloader.defineclass(classloader.java:792)     @ java.lang.classloader.defineclass(classloader.java:635)// proplem here !!!     @ customclassloader.myloader.loadclass(myloader.java:61)     @ customclassloader.customclassloader.main(customclassloader.java:32) 

classx:

package customclassloader;  /**  *  * @author roman  */ public class classx {      static {         system.out.println("класс classx инициируеться");     }      public classx() {         system.out.println("класс classx конструируеться");     }      public void f(){         system.out.println("класс classx выполняет f();");     }   } 

i donn't understend.i name class "customclassloader.classx". why show me name "java.lang"? classx.class compiled in same project , same package.

it shows java.lang because java.lang.object superclass of classes loader trying load.

you can check link sample http://www.javaworld.com/jw-10-1996/jw-10-indepth.html?page=2

" next step check if primordial class loader can resolve class name. check essential both sanity , security of system. example, if return own instance of java.lang.object caller, object share no common superclass other object! security of system can compromised if class loader returned own value of java.lang.securitymanager, did not have same checks real 1 did. "


Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -