WMctrl シェル プログラムをカバーするライブラリを作成しています。ウィンドウのサイズ変更に問題があります:
String command = "wmctrl -r \"Calculator\" -e 0,100,100,500,500";
System.out.println(command);
String output = this.bashCommandExecutor.execute(command);
System.out.println(output);
これは機能しません -出力変数が空です。しかし、wmctrl -r "Calculator" -e 0,100,100,500,500をターミナルにコピー アンド ペーストすると、正常に動作します。
「 wmctrl -d」や「wmctrl -l 」などの他のコマンドは、this.bashCommandExecutor.execute()メソッドで機能します。
このメソッドは次のようになります。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BashCommandExecutor
{
String execute(String bashCommand)
{
Process p = null;
try {
p = Runtime.getRuntime().exec(bashCommand);
p.waitFor();
}
catch (InterruptedException | IOException e) {
e.printStackTrace();
}
BufferedReader reader = new BufferedReader(
new InputStreamReader(p.getInputStream())
);
String line = "";
StringBuilder sb = new StringBuilder();
try {
while ((line = reader.readLine())!= null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
}
コマンドラインではサイズ変更が機能するのに、Java アプリでは機能しないのはなぜですか?