日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java动态打jar包_java动态加载jar包

發布時間:2023/11/27 生活经验 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。