我正在尝试创建一个Java程序,用户可以在其中从计算机中选择任何文件.class或.jar文件.然后我的程序会弹出一个JInternalFrame与JEditorPane它作为控制台,捕捉来自用户的程序的任何控制台输出.当用户的程序关闭(调用System.exit(int status);)时,我的程序不能随之关闭.我的程序可能还有一个功能,如立即停止用户程序的按钮和IDE的其他功能.我的程序不需要编译Java代码,只需运行.class和.jar文件.
我已经制作了这个程序的一个小测试版本,其中我从一个包中获得了两个特定文件,并让用户单击两个按钮中的一个,每个按钮代表两个程序中的一个.按一下按钮会调用以下方法:
private void run(Class runnable)
{
java.lang.reflect.Method[] m = runnable.getMethods();
boolean hasMain = false;
for (int i = 0; i < m.length; i++)
{
if (m[i].getName().equals("main") && m[i].getParameterTypes()[0].isArray() && m[i].getParameterTypes()[0].getName().contains("java.lang.String"))
try
{
Object invoke = m[i].invoke(null, (Object)globalArgs);
hasMain = true;
hub.setExtendedState(Hub.ICONIFIED);
numPrograms++;
}
catch (Throwable t)
{
java.util.logging.Logger.getLogger(Hub.class.getName()).log(java.util.logging.Level.SEVERE, null, t);
javax.swing.JOptionPane.showMessageDialog(null, "Could not run " + runnable.getName(), "Error in invocation", javax.swing.JOptionPane.ERROR_MESSAGE);
} …Run Code Online (Sandbox Code Playgroud) java ×1