第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何從不同的 Java 代碼執(zhí)行 Runnable JAR 的 main 方法?

如何從不同的 Java 代碼執(zhí)行 Runnable JAR 的 main 方法?

楊__羊羊 2023-07-19 17:32:26
我有一個(gè)test.jar. 這jar只有一個(gè)類。它所做的只是刪除一個(gè)文件夾import java.io.File;public class Test {    public static void main(String[] args) {        File fileTest = new File("C:\\Users\\...\\test");         fileTest.delete();              }}我需要test.jar從其他java應(yīng)用程序執(zhí)行這個(gè)外部這就是我嘗試過的  ClassLoader pluginLoader = new PluginClassLoader(new URL("file:\\\\C:\\Users\\ . . .\\test.jar"));  Class<?> pluginClass = pluginLoader.loadClass("Test");          Plugin plugin = (Plugin) pluginClass.newInstance();    pluginClass.getMethod("main"); // trying to get main method but it throw no such method exception 
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

實(shí)現(xiàn)插件架構(gòu)的正確方法是使用ServiceLoader類。但您的情況似乎要簡(jiǎn)單得多,因?yàn)槟腡est類只有一個(gè)靜態(tài)方法。


首先,main類的方法Test是static。這意味著不需要?jiǎng)?chuàng)建實(shí)例來調(diào)用它,因此您應(yīng)該刪除對(duì)pluginClass.newInstance().


其次,Java 中的方法是通過其簽名來定義的。 簽名由方法名稱和方法參數(shù)的類型來標(biāo)識(shí)。沒有帶簽名的方法main(),但有帶簽名的方法main(String[])。


您需要指定您請(qǐng)求的方法的完整簽名:


pluginClass.getMethod("main", String[].class);

最后,您可以調(diào)用它:


Method main = pluginClass.getMethod("main", String[].class);

main.invoke(null, new Object[] { new String[0] });

第一個(gè)參數(shù)為main.invokenull,因?yàn)樗且粋€(gè)static方法并且不需要特定的實(shí)例。


查看完整回答
反對(duì) 回復(fù) 2023-07-19
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

Runtime runtime = Runtime.getRuntime();

Process process = runtime.exec("java -jar test.jar");


查看完整回答
反對(duì) 回復(fù) 2023-07-19
  • 2 回答
  • 0 關(guān)注
  • 158 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)