コード例 #1
0
  /** Called via reflection */
  @SuppressWarnings({"UnusedDeclaration", "HardCodedStringLiteral"})
  protected static void start(
      final String mainClass, final String methodName, final String[] args) {
    startupStart = System.nanoTime();

    Main.setFlags(args);

    if (!Main.isHeadless()) {
      UIUtil.initDefaultLAF();
    }

    ThreadGroup threadGroup =
        new ThreadGroup("Idea Thread Group") {
          @Override
          public void uncaughtException(Thread t, Throwable e) {
            processException(e);
          }
        };

    Runnable runnable =
        new Runnable() {
          @Override
          public void run() {
            try {
              ClassUtilCore.clearJarURLCache();

              Class<?> aClass = Class.forName(mainClass);
              Method method =
                  aClass.getDeclaredMethod(methodName, ArrayUtil.EMPTY_STRING_ARRAY.getClass());
              method.setAccessible(true);
              Object[] argsArray = {args};
              method.invoke(null, argsArray);
            } catch (Throwable t) {
              throw new StartupAbortedException(t);
            }
          }
        };

    new Thread(threadGroup, runnable, "Idea Main Thread").start();
  }