为什么发布成服务后就load不进来那个jar包了呢?

本文探讨使用URLClassLoader加载自定义JAR包的问题。在本地Tomcat测试环境中成功加载,但在部署为服务后无法加载。文章提供了完整代码示例,并寻求解决方案。

菜鸟 请教个问题哈 用URLClassload来加载自己打包的jar包,在控制台用main方法测试通过,为什么发布成服务后就load不进来那个jar包了呢?
说明:是在本机上用tomcat做测试!不过将来是要到不同机子上做测试的,还有能用jar包的相对路径访问就更好了,然后用http://localhost:8080/XXXX/agent.jar加载jar包 !好吧 贴出全部代码:求教:

import java.net.URL;
import java.net.URLClassLoader;


public class Transmission {
        //path为传输过来的agent.jar包路径
public String invokeFun(String path){
boolean bo = true;
while (bo) {
try {
//i++;
Thread.sleep(1000);
//找到已经传输过来的agent
//URL url = Transmission.class.getResource("agent.jar");
URL url = new URL(path);
//System.out.println(url);
URLClassLoader loader = new URLClassLoader(new URL[] { url }, Thread.currentThread().getContextClassLoader());
//System.out.println(loader);
//把agent jar包中的类load进来
        Class clazz = loader.loadClass("ImInterf");
        //System.out.println(clazz);
    if (clazz == null) {
    bo = true;
    return "False!";
}else{
//实例化类对象
Object obj = clazz.newInstance();
//声明一个接口对象,以用来调用接口中的方法
interf mai = (interf) obj;
mai.fun("Josh", "Cindy");
bo = false;
//System.out.println("Succed!");
}

} catch (Exception e) {
System.out.println("error");

}
}
return "";
}

//public static void main(String[] arg0){
// Transmission T = new Transmission();
// T.invokeFun("file:/E:/4.jar");
//}

}

interf是在另一个工程中定义的接口,然后导出jar包,再导入到本Transmission 类中;
agent.jar是打包了的实现了interf接口的方法的类;
运行思路:大概就是把Transmission类发布成服务,服务端通过调用这个服务来实现动态加载agent.jar包。

恩 就是这个样子了 还请给出详细解决办法 谢谢!

转载于:https://www.cnblogs.com/hfyuqiang/archive/2013/05/16/3082494.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值