JAVA应用运行时加载jar包

本文介绍了如何在C/S架构的应用中,通过在Java主函数中动态加载指定路径下的jar文件,以简化启动命令,避免维护多个jar包路径的麻烦。加载代码示例提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在c/s结构的应用中,很多时候我们都需要在启动时指定很多jar文件的路径,jar包少点还好,多了就很麻烦,还要维护他。

为方便起见,程序启动时,由main函数动态去加载指定路径下的jar文件到jvm,这样启动命令就干净了很多。

加载jar包的代码:

private static class JarLoader {
		private URLClassLoader urlClassLoader;
		public JarLoader(URLClassLoader urlClassLoader) {
			this.urlClassLoader = urlClassLoader;
		}
		
		public void loadJar(URL url) throws Exception {
			Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
			addURL.setAccessible(true);
			addURL.invoke(urlClassLoader, url);
		}
	}

private static void loadjar(JarLoader jarLoader, String path) throws MalformedURLException, Exception{
		File libdir = new File(path);
		if (libdir != null && libdir.isDirectory()) {
			
			File[] listFiles = libdir.listFiles(new FileFilter() {
				
				@Override
				public boolean accept(File file) {
					// TODO Auto-generated method stub
					return file.exists() && file.isFile() && file.getName().endsWith(".jar");
				}
			});
			
			for (File file : listFiles) {
				jarLoader.loadJar(file.toURI().toURL());
			}
			
		}else{
			System.out.println("[Console Message] Directory ["+path+"] does not exsit, please check it");
			System.exit(0);
		}
	}

public static void main(String[] args) {
		JarLoader jarLoader = new JarLoader((URLClassLoader)ClassLoader.getSystemClassLoader());

                loadjar(jarLoader, System.getProperty("user.dir")+"/lib");

}


这样,我们在启动的时候就java -jar app.jar 就好了,其他Jar包由main函数搞定。



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值