--- /dev/null
+package org.argeo.slc.detached;
+
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Properties;
+import java.util.Vector;
+
+public class AppLauncher {
+ private Properties systemProperties = new Properties();
+ private String mainClass = null;
+ private List arguments = new Vector();
+
+ public void launch() {
+ try {
+ if (mainClass == null)
+ throw new DetachedException(
+ "A main class name muste be specified.");
+
+ System.getProperties().putAll(systemProperties);
+ //Class clss = getClass().getClassLoader().loadClass(mainClass);
+ Class clss = Class.forName(mainClass);
+
+ String[] args = new String[arguments.size()];
+ for (int i = 0; i < arguments.size(); i++) {
+ args[i] = arguments.get(i).toString();
+ }
+
+ Class[] mainArgsClasses = new Class[] { args.getClass() };
+ Object[] mainArgs = { args };
+ Method mainMethod = clss.getMethod("main", mainArgsClasses);
+ mainMethod.invoke(null, mainArgs);
+
+ } catch (Exception e) {
+ throw new DetachedException("Unexpected exception while launching "
+ + mainClass, e);
+ }
+
+ }
+
+ public void setSystemProperties(Properties systemProperties) {
+ this.systemProperties = systemProperties;
+ }
+
+ public void setMainClass(String mainClass) {
+ this.mainClass = mainClass;
+ }
+
+ public void setArguments(List arguments) {
+ this.arguments = arguments;
+ }
+
+}