菜鸟 请教个问题哈 用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包。恩 就是这个样子了 还请给出详细解决办法 谢谢!