0

バックグラウンド

復活させたい古いアプレットがあります。すべての機能は Windows XP で動作します。ただし、Windows 7 では、ネイティブ アプリケーションでファイルを開くことはできません (以下のコードの一部)。何も起こらず、エラーも何も起こりません。私はJava バージョン 1.5.0 (J2SE 5.0)を使用しているため、Desktop.getDesktop(); 動作しないでしょう!

コード

public void start(String sFileName, String sDir, ctgraphics gGfx) {
    String command = '"' + sDir + sFileName + '"';
    Runtime myRuntime = Runtime.getRuntime();
    try {
        myRuntime.exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + command);
        gGfx.setStatusText("File opened.");
        gGfx.drawStatusBar(1);
    } catch (IOException e) {

        System.out.println("Error " + e.getMessage());
    }

}

質問

上記のコードが Windows 7 で機能しないのはなぜですか。代わりに、ネイティブ アプリケーションでファイルを開くにはどうすればよいですか (Java v. 1.5 を使用していることを考慮して)。

.

乾杯。

4

3 に答える 3

2

Runtime.exec() が実行されない場合に読み取ります。多くの一般的な落とし穴について説明します。

于 2012-04-27T12:35:57.300 に答える
1

デスクトップ サポートを使用する場合は、次のリンクを参照してください。

Desktop.open

File開きたいファイルのパスを使用して を作成し、を呼び出すだけDesktop.getDesktop().open(file)です。

1.5 デスクトップが標準の JDK に組み込まれるライブラリであった前は、このオプションの使用を検討できます。

ここでチュートリアルを見つけることができます:

Java one 2004 の javadesktop チュートリアル

お役に立てれば

そして、ここにプロジェクトサイトがあります:

JDICプロジェクト

ここでjarを見つけることができます:

jdic jar を使用した Maven リポジトリ

于 2012-04-27T12:35:08.873 に答える
1
  1. への単一行呼び出しはRunTime.exec()めったに機能しません。When Runtime.exec() won'tのすべての提案を読んで実装してください。
  2. 引数を配列に分割して、より簡単で予測可能な解析を行います。
  3. 1.5 以降、J2SE はProcessBuilderなどのメソッドを提供してきましたredirectErrorStream()。この方法により、ポイント 1 の推奨事項のいくつかを実装しやすくなります。
于 2012-04-27T12:41:23.797 に答える