0

Red Hat Enterprise Linux 5 サーバーで実行する Java Swing アプリケーションを作成しており、jEdit を起動してログ ファイルを表示したいと考えています。

ここにいくつかのコード例があります。

public static void main(String[] args) throws IOException, InterruptedException {

    String cmd = "sh -c \"java -jar /tmp/jEdit/jedit.jar /tmp/test.txt\"";

    System.out.println(cmd);

    Runtime.getRuntime().exec(cmd);

}

出力は次のとおりです。

sh -c "java -jar /tmp/jEdit/jedit.jar /tmp/test.txt"

コマンド出力をコピーして端末ウィンドウに貼り付けると、正常に動作します。

一連の cmd 値を試しましたが、jEdit ウィンドウを表示できません。

変更により、このプロセスは Windows で正常に機能します。

私がやっていることは Linux で可能ですか?

前もって感謝します!

4

5 に答える 5

2

mainjEdit は Java で実装されているため、メソッド (jedit.jar に含まれるマニフェスト ファイルで宣言されたクラス内) が何を行うかについてソースを確認し、まったく使用せずに同じことを行う方がおそらく簡単でしょうRuntime.getRuntime().exec()

それを使い続けたい場合は、個々のコマンドを配列として exec() に渡すことができます。これにより、多くの場合、このような問題が解決されました。

于 2009-11-12T20:29:44.193 に答える
1

Runtime.exec()特別な注意が必要です。を受け入れる exec メソッドStringは、スペース文字を区切り文字として使用して、文字列をコマンドに分割します。を受け入れる exec メソッドを使用する必要がありますString[]詳しくはこちら、特に下部付近をお読みください。

于 2009-11-13T01:24:00.843 に答える
1

Linux は、X-Windows システムにディスプレイ ポートの概念を使用します。これにより、ユーザーごとに異なるデスクトップ環境を維持できます。また、リモート マシンのユーザーは、最初のマシンからデスクトップ アプリを実行できますが、リモートで UI を表示できます。

一度に利用できるデスクトップ環境が 1 つしかない Windows では、そうではありません。

最初に必ず行う必要があるのは、環境変数「DISPLAY=localhost:0」を、これを起動する環境に追加することです。ただし、「xhost +localhost」も実行する必要がある場合があります。そうしないと、許可されない場合があります。

ゾンビになった一連の jEdit プロセスを正常に起動できなかったことも再確認し (top を使用)、必要に応じてそれらを強制終了します (kill を使用)。

于 2009-11-12T20:36:44.957 に答える
0

私はこれを一度やったことがありますが、同じ問題が発生しました

私が行ったことは、コマンド ラインをテキスト ファイルに書き込んでから、そのテキスト ファイルをシェル スクリプト ファイルとして実行することです。それは私にとってはうまくいきました。

于 2010-01-21T17:43:05.413 に答える
0

Jeditにはランチャースクリプトがある/usr/bin/jeditと思います。jedit少なくとも現在のバージョン 4.5 では、コマンド プロンプトに入力するだけで実行されます。明示的なコマンドの代わりにそのスクリプトを試してくださいjava

于 2012-09-18T06:45:17.093 に答える