菜鸟 请教个问题哈 用URLClassload来加载自己打包的jar包,在控制台测试通过,为什么发布成服务后就load不进来那个jar包了呢,
//URL url = Transmission.class.getResource("agent.jar");
URL url = new URL("file:/E:/AB_F/BPEL/AgentPro/Transmission/build/classes/agent.jar");
System.out.println(url);
URLClassLoader loader = new URLClassLoader(new URL[] { url }, Thread.currentThread().getContextClassLoader());
急求啊!!!
问题补充:是在本机上!不过将来是要到不同机子上做测试的,用tomcat做测试。还有您说用相对路径是指把ar包拷到tomcat的webapps下么,然后用http://localhost:8080/XXXX/agent.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包。
恩 就是这个样子了 还请给出详细解决办法 谢谢!
相关推荐
该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件pac
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...
Springboot + Hutool-db 使用 URLClassLoader 动态加载外部数据库和数据池 jar包实例
使用URLClassLoader加载本地文件夹c盘下的test.jar文件
首先第一个是 jar 文件的制作,Java 里面直接把 .class 文件打包到 .jar 文件里面就可以了,但是 Android 的 Dalvik VM 是不认 Java ...要动态加载其它类,可以用的 Class Loader 有: DexClassLoader,PathClassLoader
这样,每次调用代理类中的方法,都会先检查实现类的class文件是否是最新的,如果不是则重新加载,达到动态加载实现类class的目的。 关键字: Java实现热加载; Java动态加载class; Java覆盖已加载的class; Java...
3):从jar、zip等等压缩文件加载类,自动解析jar文件找到class文件去加载util类 4):从java源代码文件动态编译成为class文件 当一个类被加载、连接、初始化后,它的生命周期就开始了,当代表该类的Class对象不再...
加载jar这一部分很容易,可是卸载jar就没那么容易了。加载jar的时候需要用反射去调用URLClassLoader的addURL方法。}%>jars.jar内
在使用spring的aop功能时,这两个jar是必须的,否则会报错,如下: Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException at java.net....
然而,双亲委派机制也可以被破坏,例如使用 URLClassLoader 加载类,这可以使得类加载器不遵守双亲委派机制的规则。 在 Java 中,了解类加载机制非常重要,因为它关系到 Java 程序的执行和安全性。理解类加载机制...
NULL 博文链接:https://yklovejava-163-com.iteye.com/blog/1736631
创建 URLClassLoader 类加载器 * 2.获取当前执行的classpath的所有jar包的路径 * 3.通过java的ToolProvider创建JavaCompile,用来执行class源文件 * 4.创建DiagnosticCollector用来执行获取执行失败的错误结果 *...
类加载器分为根加载器(bootstrap classloader)、扩展类加载器(ext classloader)、系统类加载器(system classloader)、自定义类加载器(通常继承java.net.URLClassLoader,重写findClass()),它们的关系通常...
1、用AXMLPrinter2.jar反编译xxx.xml文件 解压xxx.apk,选择main.xml(也可选择其它xml文件,不过xml文件都是乱码),复制到AXMLPrinter2.jar所在目录,通过cmd 进入到AXMLPrinter2.jar所在目录,使用如下命令,得到的...
ClassLoaderTest 测试自定义的URLClassLoader以加载类 测试如何正确关闭类加载器。 测试如何使用反射关闭JarFile来修复资源泄漏。
执行链实际为:URLClassLoader.class.getConstructor(java.net.URL[].class).newInstance(new
今天用dex2jar.bat反编译apk的classes.dex文件的时候报了以下错误: ---------------------------------------------------------------------------- 描述错误: ECHO 处于关闭状态。 Exception in thread "main" ...
DexClassloader 这个一个demo,用来实现加载class文件,如果在实际项目中可以实现,动态修改代码的业务逻辑 首先在安卓中如果我们想实现的...3: URLClassloader: 可以加载java的jar包,但是Dalvik 虚拟机不支持这种加载方式
at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.load...