首页 > 编程知识 正文

如何把jar包导入到项目里,java工程添加jar包

时间:2023-05-05 13:24:34 阅读:48609 作者:2727

假设存在包含Util类的hello.jar文件。 我们希望在运行时将此jar包放入运行时环境中,并调用Util.getVersion方法。 怎么实现?

在java中,我们的类都是通过类加载器加载的。 此外,ClassLoader具有分层结构,如果找不到某个类,它就会去他的父类加载器中查找,如果仍然找不到,它就会抛出ClassNotFoundException。

要动态加载hello.jar中的Util类,必须将此jar包放入类加载器中,然后检索中的类。 如下一段代码所示。

位于hello.jar

packagecom.flyingzl; 公共类util { publicstaticvoidgetversion (

system.out.println (Java version : ) system.getproperty (Java.version );

}

}

importjava.io.File; importjava.lang.reflect.Method; importjava.net.URL; importjava.net.URLClassLoader; public class main { publicstaticvoidmain (字符串[ ] args ) }

URL[] urls=newURL[] {};

myclassloaderclassloader=newmyclassloader (URLs,null ); try{

class loader.add jar (new file (c :/hello.jar ).toURI ).toURL );

class clazz=class loader.load class (com.flying ZL.util );

方法方法=clazz.getdeclaredmethod (getversion );

method.invoke (空);

classLoader.close (;

}catch(exceptione ) {

e .打印堆栈跟踪(;

}

} staticclassmyclassloaderextendsurlclassloader { publicmyclassloader (URL [ ] URLS ) super ) URLs;

}publicmyclassloader(URL[]URLS,ClassLoader parent ) super (URLs,parent );

}publicvoidaddjar(URLURL ) this.addURL ) URL;

}

}

}

注:在本例中,代码编写得很粗,生产代码需要更高级别的异常处理,以演示如何动态加载jar包。 只关心如何动态加载jar包。

要动态加载jar包,必须具有名为java.net.URLClassLoader的类,并且可以指定将jar包或classes文件加载到类空间中的路径。 加载完成后,可以通过直接调用loadClass来加载指定的类,然后在反射中生成实例或调用方法。

实际上,Tomcat等服务也使用了这一观点,例如,当每个web APP应用程序启动时,它下面的lib文件夹下的jar包将自动加载。

运行程序后,可以看到程序会正常输出。

Java版本:1.7.0_ 03

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。