JAVA怎么动态加载JAR包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA怎么动态加载JAR包相关的知识,希望对你有一定的参考价值。

即:给定相对JAR路径,加载JAR包里的Class,并可以使用这些class

参考技术A 选中要加载jar的工程,右击出现菜单Build Path --->Configure Build Path 出现Properties 选择JavaBuildPath Libraries 点击Add External JARs......就可加载你要加载的jar包了,jar包加载到工程里面的是Jar的路径 并没有把Jar包里面的内容复制进去,如果你把工程复制到另一台计算机上的运行又得重新加载jar包。。。。。。这是个人理解,不知道是否能解决你的问题。 参考技术B 反射就可以。追问

能给出官方javadoc关于反射相关类的地址吗

追答

下载jdk的api,找到java.lang.reflect这个包下的类,里面都是相关的。

你的jar包只要加入classpath中,jdk就会自动帮你加载的,那你在运行期直接Class.forname就可以得到对应的类了。

如果没有加入classpath,那你可以通过classloader对jar包中的类进行加载。

本回答被提问者采纳
参考技术C 什么意思?你想写代码实现?…… 参考技术D 把jar包放在WEB-INF下面的lib文件夹下就可以了

在加载类时,如何指定所使用的jar包

参考技术A 定制自己的类加载器,从指定的jar包中加载类就行了

一般动态加载类都是直接用Class.forName()这个方法,但这个方法只能创建程序中已经引用的类,并且只能用包名的方法进行索引,比如 Java.lang.String,不能对一个.class文件或者一个不在程序引用里的.jar包中的类进行创建。但使用URLClassLoader 就可以直接根据创建一个单独的.class文件,并且每当重新载入后并实例化后都是最新的方法。类似于jsp,当你在eclipse中改了一个jsp并且存储后,只要刷新页面就可以得到最新的结果而不用重新启动服务器。
URLClassLoader是在java.net包下的一个类。他的构造函数输入参数需要输入1个URL数组。假设我们有一个编译后的class文件在 C:\URLClass\testClass.class中,URLClassLoader进行加载,其中有个方法为test,我们需要动态加载这个类并且运行test方法

Java代码
File xFile=new File("d:/xx.jar");
URL xUrl= xFile.toURL() ;
URLClassLoader ClassLoader=new URLClassLoader(new URL[] xUrl );
Class xClass=ClassLoader.loadClass("testClass");
Object xObject=xClass.newInstance();
Method xMethod=xClass.getDeclaredMethod("test");

以上是关于JAVA怎么动态加载JAR包的主要内容,如果未能解决你的问题,请参考以下文章

Java动态加载JAR包

java可以动态加载一个jar包,并且调用里面的类和方法吗?

动态加载jar,实现自定义业务

JAVA如何动态加载jar,并调用对应的函数?

java如何加载一个外部的类或class文件

java 加载的不同的jar包中有相同的类名怎么办调用到自己需要的类