当前位置: 代码迷 >> Java Web开发 >> classLoader 加密有关问题,加密有关问题已经解决不知道加载后怎么让其他的类使用
  详细解决方案

classLoader 加密有关问题,加密有关问题已经解决不知道加载后怎么让其他的类使用

热度:390   发布时间:2016-04-16 21:55:17.0
classLoader 加密问题,加密问题已经解决不知道加载后如何让其他的类使用
Class t = loader.loadClass(name);
      Object o = t.newInstance();
      o.getClass().getMethod("noReturnStrCall", null).invoke(o, null); 

已经可以调用出结果,就是可以通过main方法或者容器取出类里面的方法,感觉类已经正常执行了,但是再别的类里面去new 这个类的时候就会报notFondClass请问怎么解决,原因是什么,
------解决思路----------------------
只能按照你上面的那种办法调用。

因为你在一个类里面new另外一个类的话,调用的是当前的classloader。
------解决思路----------------------
如1楼所说,如果用自定义ClassLoader加载类,则都应该用这类方法来进行加载。且不同的ClassLoader所加载的相同Jar包的同一个类,JVM都不会认为是同样的对象。


那么对于已经开发好的项目有没有什么好的方法对jar包加密呢?
—— 程序要预先进行特殊设计,调用部分尽量封装个工具类。
——如果是Web应用,可以去替换中间件(如Tomcat)的ClassLoader来实现。
——如果是Console应用,需要重写启动类,用自定义ClassLoader去启动原启动类。
——如果是某个具体模块,则可以考虑将该模块的参数进行标准化,比如限制其全部使用String作为参数,然后调用时用ClassLoader去调用,也可以借助Spring。


  相关解决方案