私は現在、AntビューのようにEclipseでSBTタスクを実行するためのグラフィカルインターフェイスを提供するSBTEclipseプラグインに取り組んでいます。
一般的に言って、私は新しいSBTプロセスを開始し、それOutputStream
をEclipseコンソールビューにリダイレクトし、InputStream
タスクを実行するためにそのプロセスに書き込むことによってこれを行います。
ProcessBuilder processBuilder = new ProcessBuilder("java",
"-Xms1024m", "-Xmx1024m",
"-XX:ReservedCodeCacheSize=128m",
"-Dsbt.log.noformat=true", "-XX:MaxPermSize=256m",
"-jar", getSbtLaunchPath()).directory(new File(path));
processBuilder.environment().put("JAVA_HOME", getJavaHome());
Process sbtProcess = processBuilder.start();
final InputStream inStream = sbtProcess.getInputStream();
(new thread to write the inputStream to eclipse console view)
OutputStream outStream = sbtProcess.getOutputStream();
PrintWriter pWriter = new PrintWriter(outStream); //the writer to write command to SBT process
このように、compile
タスクを実行したい場合は、次のようにします。
pWriter.println("compile")
Macではすべてがうまく機能します。しかし、WindowsでテストするとPrintWriter
、想定どおりにSBTプロセスに書き込むことができません。
この問題について、私が確信しているのは次のとおりです。
PrintWriter
同じ状況下で小さなJavaエコープログラムプロセスに書き込むことができます。つまり、SBTプロセスは通常のJavaプロセスと一部異なる場合があります。私が疑うのはそれです:
だから、皆さんに聞いてみる時が来たと思います。この問題についてどう思いますか?私は何かが恋しいですか?
問題は、SBTが使用するjlineライブラリにあります。
私は-Djline.terminal=jline.UnsupportedTerminal
Javaオプションに渡すことでこの問題を解決しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加