[英]How to call main() method of a class using reflection in java
當使用反射從另一個main方法調用Java類的main方法時,
Class thisClass = loader.loadClass(packClassName);
Method thisMethod = thisClass.getDeclaredMethod("main",String[].class);
thisMethod.invoke(null, new String[0]);
我應該創建newInstance()還是簡單地調用main(),因為它是靜態的。
對於您聲明的要求(動態調用隨機類的主要方法,使用反射,您有很多不必要的代碼。
您可以調整以下代碼以滿足您的需求:
try {
final Class<?> clazz = Class.forName("blue.RandomClass");
final Method method = clazz.getMethod("main", String[].class);
final Object[] args = new Object[1];
args[0] = new String[] { "1", "2"};
method.invoke(null, args);
} catch (final Exception e) {
e.printStackTrace();
}
認知答案看起來是正確的; 如果您需要從不在類路徑中的Jar加載,則可以使用URL類加載器
try {
URL[] urls;
URLClassLoader urlLoader;
urls = ...;
urlLoader = new URLClassLoader(urls);
@SuppressWarnings("rawtypes")
Class runClass = urlLoader.loadClass(classToRun);
Object[] arguments = new Object[]{args};
Method mainMethod = runClass.getMethod("main", String[].class);
mainMethod.invoke(null, arguments);
} catch (Exception e) {
e.printStackTrace();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.