View Javadoc

    1   /***************************************************************************************
    2    * Copyright (c) Jonas BonŽr, Alexandre Vasseur. All rights reserved.                 *
    3    * http://aspectwerkz.codehaus.org                                                    *
    4    * ---------------------------------------------------------------------------------- *
    5    * The software in this package is published under the terms of the LGPL license      *
    6    * a copy of which has been included with this distribution in the license.txt file.  *
    7    **************************************************************************************/
    8   package org.codehaus.aspectwerkz.hook;
    9
    10  import java.io.File;
    11  import java.io.IOException;
    12
    13  /***
    14   * Base class for JVM Process based starter. <p/>Base implementation to lauch a JVM given java options, main class and
    15   * args in a separate process.
    16   *
    17   * @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur </a>
    18   */
    19  abstract class AbstractStarter {
    20      protected String opt;
    21
    22      protected String main;
    23
    24      protected AbstractStarter(String opt, String main) {
    25          this.opt = opt;
    26          this.main = main;
    27      }
    28
    29      /***
    30       * return command line that launched the target process
    31       */
    32      public String getCommandLine() {
    33          StringBuffer command = new StringBuffer();
    34          command.append(System.getProperty("java.home"));
    35          command.append(File.separatorChar).append("bin").append(File.separatorChar).append("java");
    36          command.append(" ").append(opt);
    37          command.append(" ").append(main);
    38          return command.toString();
    39      }
    40
    41      /***
    42       * launchs target process
    43       */
    44      public Process launchVM() throws IOException {
    45          System.out.println(getCommandLine());
    46          return Runtime.getRuntime().exec(getCommandLine());
    47      }
    48  }