diff --git a/core/src/main/java/com/findwise/hydra/StageRunner.java b/core/src/main/java/com/findwise/hydra/StageRunner.java index 8d43964e..402944bb 100644 --- a/core/src/main/java/com/findwise/hydra/StageRunner.java +++ b/core/src/main/java/com/findwise/hydra/StageRunner.java @@ -21,6 +21,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.findwise.hydra.stage.GroupStarter; + public class StageRunner extends Thread { private StageGroup stageGroup; @@ -163,16 +165,11 @@ public void printJavaVersion() { private boolean runGroup() { CommandLine cmdLine = new CommandLine(java); cmdLine.addArgument(jvmParameters, false); - if(classPathString==null) { - classPathString = targetDirectory.getAbsolutePath()+File.separator+"*"; - } else { - classPathString = classPathString+":"+targetDirectory.getAbsolutePath()+File.separator+"*"; - } + String cp = getClassPath(); cmdLine.addArgument("-cp"); cmdLine.addArgument("${classpath}"); - cmdLine.addArgument("-jar"); - cmdLine.addArgument("${file}"); + cmdLine.addArgument(GroupStarter.class.getCanonicalName()); cmdLine.addArgument(stageGroup.getName()); cmdLine.addArgument("localhost"); cmdLine.addArgument("" + pipelinePort); @@ -182,8 +179,7 @@ private boolean runGroup() { HashMap map = new HashMap(); - map.put("file", files.get(0)); //Any of the files should do as a starting point - map.put("classpath", classPathString); + map.put("classpath", cp); cmdLine.setSubstitutionMap(map); logger.info("Launching with command " + cmdLine.toString()); @@ -222,6 +218,22 @@ private boolean runGroup() { return true; } + private String getClassPath() { + if(classPathString==null) { + return getAllJars(); + } else { + return classPathString+File.pathSeparator+getAllJars(); + } + } + + private String getAllJars() { + String jars=""; + for(String s : targetDirectory.list()) { + jars+=targetDirectory.getAbsolutePath()+File.separator+s+File.pathSeparator; + } + return jars.substring(0, jars.length()-1); + } + /** * Destroys the JVM running this stage and removes it's working files. * Should a JVM shutdown fail, it will throw an IllegalStateException.