Пример #1
0
 private void initAWTReflection() {
   if (null == cAWTEventQueue) {
     ClassLoader cl = MainThread.class.getClassLoader();
     cAWTEventQueue = ReflectionUtil.getClass("java.awt.EventQueue", true, cl);
     mAWTInvokeAndWait =
         ReflectionUtil.getMethod(
             cAWTEventQueue, "invokeAndWait", new Class[] {java.lang.Runnable.class}, cl);
     mAWTInvokeLater =
         ReflectionUtil.getMethod(
             cAWTEventQueue, "invokeLater", new Class[] {java.lang.Runnable.class}, cl);
     mAWTIsDispatchThread =
         ReflectionUtil.getMethod(cAWTEventQueue, "isDispatchThread", new Class[] {}, cl);
   }
 }
Пример #2
0
    public void run() {
      if (useMainThread) {
        // we have to start first to provide the service ..
        singletonMainThread.waitUntilRunning();
      }

      // start user app ..
      try {
        Class mainClass = ReflectionUtil.getClass(mainClassName, true, getClass().getClassLoader());
        if (null == mainClass) {
          throw new RuntimeException(
              new ClassNotFoundException("MainThread couldn't find main class " + mainClassName));
        }
        try {
          mainClassMain = mainClass.getDeclaredMethod("main", new Class[] {String[].class});
          mainClassMain.setAccessible(true);
        } catch (Throwable t) {
          throw new RuntimeException(t);
        }
        if (DEBUG)
          System.err.println(
              "MainAction.run(): " + Thread.currentThread().getName() + " invoke " + mainClassName);
        mainClassMain.invoke(null, new Object[] {mainClassArgs});
      } catch (InvocationTargetException ite) {
        ite.getTargetException().printStackTrace();
      } catch (Throwable t) {
        t.printStackTrace();
      }

      if (DEBUG)
        System.err.println(
            "MainAction.run(): " + Thread.currentThread().getName() + " user app fin");

      if (useMainThread) {
        singletonMainThread.stop();
        if (DEBUG)
          System.err.println(
              "MainAction.run(): " + Thread.currentThread().getName() + " MainThread fin - stop");
        System.exit(0);
      }
    }