关于Java中Classloader的使用问题

Kxvz 发布于 2016/05/24 10:01
阅读 415
收藏 1

假设现在我有一个项目 A, 有一个Jar包 B !

我在项目A中实现了Classloader然后加载B到项目中并执行B中的Main函数.

此时B项目中的代码会开始执行,在这执行过程中B项目中如何能调用到A项目中的方法?

加载中
1
熊手拉猫手
  1. Classloader 是个抽象类,你在A里实现的是 loadClass 方法
  2. A里要调用的方法肯定在某个类里,若能创建A项目中的这个类的对象实例,那么就可以通过这个对象调它的public方法
  3. 用 Classloader 来创造对象是利用java的反射机制,可以绕过安全机制访问私有成员变量。如无特殊情况,就import 类名,再用new创建对象就行了
  4. 如果环境配置没有错,那么在不在同1个jar包里没有区别,只取决于对象成员访问权限公有私有
  5. 不知道说的这些是不是你要问的问题
0
xpbob
xpbob
你写classloader肯定是URLClassloader的子类,在类加载的时候肯定是有个查找过程,默认就是双亲委托,或者你反过来也可以,这样起码能保证你的classloader能知道所有的路径就行,b想调用A,还是执行过程中,估计你需要通过修改字节码才能做到,考虑javassist,asm,bcel,你如果是b中又引用到A的情况……我感觉你直接把A打成JAR包,然后执行B就行啊。
0
xpbob
xpbob
classloader就是加载字节码的,你先看看是不是这个需求吧
0
Kxvz
Kxvz
感谢各位,找到替代方案了..
0
Ambitor
Ambitor

此时B项目中的代码会开始执行,在这执行过程中B项目中如何能调用到A项目中的方法?

------------这个跟classloader有什么关系,你这个是系统之间服务怎么调用吧。。。

返回顶部
顶部