package istlab.KisoJikken; import java.io.File; import java.io.IOException; public class JCompiler implements Runnable { Thread thread; Process process; String absolutePath; String pkgname; String javafname; public JCompiler(String p) { absolutePath = p; thread = new Thread(this); String[] ary; if (File.separator.equals("\\")) { ary = absolutePath.split("\\\\"); // for (int i = 0; i < ary.length; i++) // System.out.println(ary[i]); } else { ary = absolutePath.split(File.separator); } for (int i = 0; i < ary.length; i++) { if (ary[i].equals("src")) { pkgname = ary[i + 1]; javafname = ary[i + 2]; break; } } thread.start(); } @Override public void run() { // System.out.println("== コンパイル開始 =="); ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", "javac -encoding UTF-8 " + pkgname + "/*.java"); if (App.isWindows) { processBuilder = new ProcessBuilder("javac","-encoding", "UTF-8" , pkgname + "/*.java"); } processBuilder.redirectErrorStream(true); JTAConsole con = new JTAConsole("(Compile) javac " + pkgname + "/*.java"); con.setMainSrcByFileName(absolutePath); con.Systemoutprintln("=== コンパイル開始 ==="); con.Systemoutprintln(CommandRunner.prompt + "cd ~" + App.nwpsrc + " (注:~ はチルダ記号〜 で,ホームディレクトリを表します)"); con.Systemoutprintln(CommandRunner.prompt + "javac -encoding UTF-8 " + pkgname + "/*.java"); // ProcessBuilder processBuilder = new ProcessBuilder("pwd"); processBuilder.directory(new File(App.userhome + App.nwpsrc)); // processBuilder.inheritIO(); try { process = processBuilder.start(); Launcher.allProcs.add(process); con.startBR(process); // BufferedReader reader = new BufferedReader(new // InputStreamReader(process.getInputStream())); // String line; // while ((line = reader.readLine()) != null) { // jta.append(line); // } process.waitFor(); } catch (IOException | InterruptedException e1) { e1.printStackTrace(); } con.Systemoutprintln("=== コンパイル終了 === (ALT+Wで閉じる)"); thread = null; } }