diff --git a/src/main/java/info/istlab/ServerTester/App.java b/src/main/java/info/istlab/ServerTester/App.java index 9916a9e..458ab5d 100644 --- a/src/main/java/info/istlab/ServerTester/App.java +++ b/src/main/java/info/istlab/ServerTester/App.java @@ -4,6 +4,7 @@ public static boolean isWindows; public static String userhome; public static String userdir; + public static boolean isJAR = false; static { String os = System.getProperty("os.name").toLowerCase(); @@ -13,6 +14,10 @@ } public static void main(String[] args) { + Class clazz = App.class; // Mainクラスを指定 + String location = clazz.getProtectionDomain().getCodeSource().getLocation().getPath(); + isJAR = location.endsWith(".jar"); + Host myhost = new Host(); WebServer web = new WebServer(8081); @@ -27,7 +32,7 @@ ThreadTimeServer ttime = new ThreadTimeServer(11123); myhost.addPanel(new ServerPanel(ttime, myhost)); - EchoServer echo = new EchoServer(10008,"127.0.0.1"); + EchoServer echo = new EchoServer(10008, "127.0.0.1"); myhost.addPanel(new ServerPanel(echo, myhost)); ThreadEchoServer techo = new ThreadEchoServer(11008); diff --git a/src/main/java/info/istlab/ServerTester/JExecutor.java b/src/main/java/info/istlab/ServerTester/JExecutor.java index 2f1a6f4..fc7917a 100644 --- a/src/main/java/info/istlab/ServerTester/JExecutor.java +++ b/src/main/java/info/istlab/ServerTester/JExecutor.java @@ -52,6 +52,11 @@ } comlist.add("java"); + // JARで起動した場合は、クラスパスでJARファイルを指定する + if (App.isJAR) { + comlist.add("-cp"); + comlist.add(App.userdir + "/ServerTester-1.0-launcher.jar"); + } comlist.add(pkgname + "." + javafname); // コマンドラインオプションをtrimした結果が空文字列なら追加しない if (commandLineOption.trim().length() > 0) { @@ -71,9 +76,15 @@ con.Systemoutprintln(CommandRunner.prompt + "java " + pkgname + "." + javafname + " " + commandLineOption); } // ProcessBuilder processBuilder = new ProcessBuilder("pwd"); - File dir = new File(App.userdir + "/target/classes"); - System.out.println("[JExecutor] chdir to "+dir.getAbsolutePath()); - processBuilder.directory(dir); + if (App.isJAR) { + File dir = new File(App.userdir); + System.out.println("[JExecutor:JAR] chdir to " + dir.getAbsolutePath()); + processBuilder.directory(dir); + } else { + File dir = new File(App.userdir + "/target/classes"); + System.out.println("[JExecutor] chdir to " + dir.getAbsolutePath()); + processBuilder.directory(dir); + } // processBuilder.inheritIO(); try { process = processBuilder.start();