0

私は、実行可能ファイルの読み取り、書き込み、実行など、ファイルに対して何らかの処理を実行する通常の Java クラス (JSP でもサーブレットでもない) を持っています。各ファイルの相対パスを知るには?

については知ってgetClass().getResourceStream()いますが、これはファイルの読み取りにのみ役立ちます。そして、私は知ってgetServletContext().getRealPath()いますが、私のコードはサーブレットではなく通常の Java クラスにあります。

私は次のことをしたいと思います

String relativePath = "path/to/exe";
Runtime.getRuntime.exec(relativePath);
4

2 に答える 2

1

そして、私は知ってgetServletContext().getRealPath()いますが、私のコードはサーブレットではなく通常のJavaクラスにあります

その結果を Java クラスに渡すだけです。

String desiredPath = calculateItSomehowBasedOn(getServletContext().getRealPath("/"));
yourJavaClass.executeExe(desiredPath);

デプロイされた WAR がローカル ディスク ファイル システムではなく、メモリ内で展開されると、getRealPath()が返されることに注意してください。null一部の運用サーバー構成では、これが行われます。

exeファイルの場所を構成ファイルの設定にする方がはるかに優れています。例えば

path.to.exe = /absolute/path/to/exe

この構成ファイルは、クラスパスに配置するか、そのパスをクラスパスに追加できます。サーブレットベースのアプリケーションで構成リソースファイルを配置する場所と読み取る方法も参照してください。

于 2012-07-01T00:56:22.297 に答える
0

あなたの質問は、Java EE ではなく Java SE に対応しているようです。あなたの「exe」ファイルはあなたのJavaプロジェクトに関連していると思いますか?絶対パスを取得するには、次を使用できます。

File f = new File("path/to/exe");
String exePath = f.getAbsolutePath();

次に、絶対パスを使用してコマンドを発行できます。参照: File の JavaDoc

于 2012-07-01T00:01:05.127 に答える