2012-04-27 10 views
0

背景

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

コード

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を使用していますか?)

乾杯。

+0

'catch(IOException e){..e.getMessage().. 'コードは例外出力を生成しませんがその最後の部分に 'e.printStackTrace();'を追加するように変更することをお勧めします。 –

答えて

1

あなたは、このリンクを見て、デスクトップのサポートを使用することもできます。

Desktop.open

あなたはちょうどあなたが開き、Desktop.getDesktop().open(file)を呼び出したいファイルのパスとFileを作成します。

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

javadesktop tutorial for java one 2004

ホープこれは

を助け、ここではプロジェクトのサイトです:あなたはjarファイルを見つけることができます

ここ

JDIC Project

ここ

あなたはチュートリアルを見つけることができます。

Maven repo with jdic jars

+0

'Desktop'は1.6+です。&OPは明示的に" * Javaバージョン1.5.0(J2SE 5.0)*を使用しているため、* Desktop.getDesktop(); *は動作しません!これを「回答ではありません」と削除してください。 –

+1

1.6より前では、プロジェクトに追加できる別のlibでした。 –

+0

もしあなたがそれへのリンクを見つけたら、私はアップ票を投じることができます。今のところ良い編集。 :) –

2

When Runtime.exec() won'tを読んでください。共通のピットファールの多くを記述しています。

+0

+1私もそれを打ち負かす。 :) –

1
  1. RunTime.exec()への1回の呼び出しはめったに動作しません。 When Runtime.exec() won'tのすべての提案を読み、実装してください。
  2. より簡単で予測可能な解析のために、引数を配列に分割します。
  3. 1.5以降、J2SEはなどのメソッドを提供するProcessBuilderを提供しています。この方法は、ポイント1の推奨事項の一部を実装することを容易にします。
関連する問題