0

私の戦争では、私はファイルを持っていexeますWEB-INF\classes\

このファイルを Java コードで実行するにはどうすればよいですか (このファイルへのパスを指定するにはどうすればよいですか) ?

command = " ? ";
Process x = p.exec(command);
4

3 に答える 3

1

次のアプローチが機能する可能性があります。

1) 実行可能ファイルのフル パスを準備します。

ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/classes/executable");

2) 通常どおりに実行します。

String[] cmd = { fullPath /*[...] arguments */};
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();

これは簡単な例です。ProcessBuilderについての詳細もお読みください。

于 2013-06-25T10:57:13.377 に答える
1

これは悪い考えです。.war パッケージがほぼすべてのサーバーで実行され (「.war はプラットフォームに依存しない」)、.exe ファイルが 1 つのアーキテクチャ用にコンパイルされているという単純な事実を想像してみてください。

プラットフォームに依存しない部分とプラットフォームに依存する部分を分離するためだけに、.exeを外部プログラムとして実行することをお勧めします。次に、Javaでオペレーティングシステムをテストし、これに基づいて目的の外部プログラムを実行できます.

同様の質問でこのリンクを読んでください。

于 2013-06-25T10:57:49.300 に答える
0

Web アプリケーション内でファイルの実際の場所を見つける最善の方法は、ServletContext.getRealPath を使用することです ( http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getRealPath(javaを参照)。 .lang.文字列) )

セッションからそのオブジェクトにアクセスできます...

于 2013-06-25T10:56:44.510 に答える