如何将JAR包加入到项目的库中引用

如何将JAR包加入到项目的库中引用,第1张

你可以这个!1:右击项目——属性——Java构雀散建路径——库——添加外部JAR——浏览到你所要添加的岁族Jar包!2:把你要添加的Jar包复制到项目里的lib文件夹里顷雀氏也可以!

设我们有一个hello.jar文件,里面有一个Util类,我们希望在运行期调将这个jar包放入到我们运行环境并且调用里面的Util.getVersion方法。怎么实现?

在java中,我们的类都是裂慎桐通过ClassLoader来加载的,同时ClassLoader具有层级关系,当某个类找不到时,它会去他的父类加载器去寻找,如果依然找不到,就抛出ClassNotFoundException了。

为了动态加载hello.jar里面的Util类,我们需要将这个jar包放入到我们的类加载器中去,然后再获取里面的类。如下面的代码。

// 位于hello.jar

package com.flyingzl

public class Util {

public static void getVersion(){

System.out.println("java version: " + System.getProperty("java.version"))

}

}

import java.io.File

import java.lang.reflect.Method

import java.net.URL

import java.net.URLClassLoader

public class Main {

public static void main(String[] args) {

URL[] urls = new URL[] {}

MyClassLoader classLoader = new MyClassLoader(urls, null)

try {

classLoader.addJar(new File("肆坦c:/hello.jar").toURI().toURL())

Class<?>clazz = classLoader.loadClass("com.flyingzl.Util")

Method method = clazz.getDeclaredMethod("getVersion")

method.invoke(null)

classLoader.close()

} catch (Exception e) {

e.printStackTrace()

}

}

static class MyClassLoader extends URLClassLoader {

public MyClassLoader(URL[] urls) {

super(urls)

}

public MyClassLoader(URL[] urls, ClassLoader parent) {

super(urls, parent)

}

public void addJar(URL url) {

this.addURL(url)

}

}

}

注意:这里仅仅是为了展示如何动态加载jar包,代码写得很粗,生产代码需要有更完善的异常处理。我们只关心如何动态加载jar包即可。

动态加载jar包,需要用到java.net.URLClassLoader这个类,它可以指定一个路径将jar包或者classes文件加载到类空间。加载完毕后,直接调用loadClass就可以加载指定的类,然后通过反射生成实例或者调用方法即可。

其实,Tomcat等服务器也利用了此思路,比如每一个web应用启动时,它都会自动加载其下的lib文件夹下的jar包。

运行程序,我们就可以看孝滚到程序正常输出:

java version: 1.7.0_03


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11988348.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存