java动态打jar包_java动态加载jar包
目录结构如下.
├── main
│ ├── java
│ │ └── lu
│ │ └── tool
│ │ └── jar
│ │ ├── InterfaceRunner.java
│ │ └── Loader.java
│ └── resources
└── test
├── java
└── resources
InterfaceRunner.java 为挂载 jar 中类的实现接口
Loader.java 为jar的加载器和执行器
所有第三方包的jar路径,通过 web 界面管理,然后存储在一个文件中,这里不实现 web 的管理。
InterfaceRunner.java:package lu.tool.jar;
/**
* Created by xiaozi on 11/29/14.
*/
public interface InterfaceRunner {
public void fire();
}
Loader.javapackage lu.tool.jar;
import java.io.*;
import java.net.URL;
import java.net.URLClassLoader;
/**
* Created by xiaozi on 11/29/14.
*/
public class Loader {
public static void main(String[] args) {
String configFile = System.getProperty("jar.conf");
if (configFile == null || configFile.isEmpty()) {
System.exit(1);
}
System.out.println(configFile);
File file = new File(configFile);
try {
BufferedReader in = new BufferedReader(new FileReader(file));
String s;
while ((s = in.readLine()) != null) {
if (s.isEmpty()) continue;
System.out.println(s);
URL url = new URL(s);
URLClassLoader myClassLoader = new URLClassLoader(new URL[] {url}, Thread.currentThread().getContextClassLoader());
Class> myClass = myClassLoader.loadClass("lu.tool.jar.Runner");
InterfaceRunner action = (InterfaceRunner) myClass.newInstance();
// 达到指定条件的时候触发,这里仅是个演示
// 在没有优先级的执行条件下应该使用子进程的方式,防止其中的一个crash掉
action.fire();
myClassLoader.close();
System.out.println("done");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
jar.conf 存放 jar 的本地的绝对路径file:///Users/xiaozi/Documents/testrunner/out/artifacts/testrunner_jar/testrunner.jar
被挂载jar包中的类实现package lu.tool.jar;
/**
* Created by xiaozi on 11/29/14.
*/
public class Runner implements InterfaceRunner {
@Override
public void fire() {
System.out.println("Hello, I'm in another jar!");
}
}
java动态打jar包_java动态加载jar包相关推荐
- java spring包_java 自定义加载器,加载spring包,动态加载实现,jar包隔离,tomcat加载webapp方式...
java 自定义加载器,加载spring包,动态加载实现,jar包隔离,tomcat加载webapp方式 发布时间:2018-08-20 12:02, 浏览次数:774 , 标签: java spri ...
- java做windows屏保_java编程加载窗口,制作动画(屏保泡泡)
1.整体的结构图: 2.编写GameFrame02.java代码: package cn.bjsxt.test; import java.awt.Frame; import java.awt.Grap ...
- 【Unity_AssetBundle】(四)什么是依赖?怎样加载依赖包?
1.什么是依赖? 概念: 在包中的一个对象资源,如果关联了另一个对象资源 会自动把另一个资源打在同一个包中 例: 现有一个Cube: 已经把他打入名为"model"的AB包中 现在 ...
- flink sql udf jar包_Java动态加载Jar实例解析
导读:在实际项目开发中,有时会遇到需动态加载jar包的应用场景.如将Flink的UDF自定义方法制作成方法库(既打成一个Jar),在提交给Flink集群的Job中动态加载jar便可使用.下面将举一个简 ...
- java程序动态加载jar包,并调用其中的方法
再编写Java应用程序的时候我们通常需要动态的加载jar,具体的代码如下: demo1.jar中的invoke方法: package com.amx.test; public class Test ...
- java动态加载jar文件并执行方法
在项目开发的过程中,有时候需要动态灵活的加载某个jar包并执行里面的方法的时候,我们可以使用本篇文章写得方式去动态的加载jar包而不用使用原始方式引入jar包作为lib去使用,接下来介绍如何动态加载j ...
- Java动态加载jar及class文件
经常碰到需要动态加载jar及class文件的场景.Java类由于需要加载和编译字节码,动态加载class文件较为麻烦,但JDK仍提供了一整套方法来动态加载jar文件和class文件. 一.动态加载ja ...
- java动态加载jar时,jar中还有第三方jar无法加载的解决方法
java动态加载jar时,jar中还有第三方jar无法加载的解决方法 当java插件化开发时,即一个java程序在运行的情况下动态加载另一个jar,网上大多数的方法如下 public static v ...
- 动态加载jar包(一)
一.编写被调用的类 package com.qunar.helloworld;public class HelloWorld {public String sayHello(){return (&qu ...
- android动态jar,Android动态加载Jar(包含第三方依赖Jar)
最近项目有一个需求,需要根据用户需求动态加载APP内某功能模块,且当该部分功能模块代码有变动,只需更新该功能JAR,无需更新整个APK,基于这个需求,决定采用动态加载Jar的方式去实现,于是各种查资料 ...
最新文章
- IE条件注释和CSS Hacks
- 移动WEB的页面布局
- C++总结笔记(七)—— 运算符重载
- spring总结_Spring综合课程总结
- python脚本编程实例_C程序调用Python脚本的例子
- python下拉菜单_自定义Django Form中choicefield下拉菜单选取数据库内容实例
- 一个游戏大量合服代表什么_一个女人哭了代表什么?这几点帮你分析
- pytorch nonzero_[深度学习框架]PyTorch常用代码段
- .net Remoting与Web Service的比较
- 你妈咪喊你回家刷题~~
- 计算机里的硬盘分区,Disk Genius对电脑硬盘分区的详细步骤
- 简书计算机组成原理知识点梳理,指令:计算机的语言(MIPS) --计算机组成原理(2)...
- 赛扬J4105和赛扬N5095哪个好
- MySQL数据备份和导入
- NFT新范式,OKALEIDO创新NFT聚合交易生态
- 秒杀产品总是抢不到?抢单助手来报道
- 模拟电路3(三极管及其基本放大原理)
- 通过实现25个数组方法来理解及高效使用数组方法(长文,建议收藏)
- shopify 插件开发
- ElasticSearch第三讲 ES-docker-Compose集群部署证书认证