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  }