我正在嘗試從 jar 文件中的類動態執行函數。我有 jar 文件的位置、類的名稱和其中的函數作為字符串。這是我到目前為止所得到的:在主程序中: public class Main { public static void main(String[] args) { File file = new File("E:\\DeSKtop\\hw.jar"); String lcStr = "Main1"; URL jarfile; try { jarfile = new URL("jar", "","file:" + file.getAbsolutePath()+"!/"); URLClassLoader cl = URLClassLoader.newInstance(new URL[] {jarfile }); Class loadedClass = cl.loadClass(lcStr); Method method = loadedClass.getDeclaredMethod("returnHW"); Object instance = loadedClass.newInstance(); Object result = method.invoke(instance); //System.out.println(method.invoke()); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //System.out.println(loadLibrary(myJar)); catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } }你能告訴我我做錯了什么嗎?先感謝您。
1 回答

縹緲止盈
TA貢獻2041條經驗 獲得超4個贊
解決方案是您還必須說明包。
如果您更新存儲類名的變量 lcStr 以包含包,它將起作用。
例子:
String lcStr = "com.company.Main1";
添加回答
舉報
0/150
提交
取消