1

私の問題は、ある種のランチャーを作成し、「再生」ボタンをクリックすると呼び出されるメソッドを作成したことです。

private void PlayButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
    try 
    {
        new ProcessBuilder("src/calc.exe").start(); 
    } 
    catch (IOException ex) 
    {
        Logger.getLogger(Launcher.class.getName()).log(Level.SEVERE, null, ex);
    }
}  

実行されているファイルは、Windows からの電卓の単なるコピーであり、私のプロジェクトの src フォルダーにあります。(パスは「src/calc.exe」)

netbeans プロジェクト ファイルを JAR ファイルにコンパイルしない限り、すべてが正常に動作します。

JAR ファイルを実行して再生ボタンをクリックしても、何も起こりません。

これを修正する方法を教えていただければ幸いです。

(PS: calc.exe は実行するプログラムの名前であるとは限りません。ファイル名は .ini によって決定されます。calc.exe はプログラムのテストにのみ使用されます。)

4

2 に答える 2

1

これは一種のデリケートなテーマです。

JAR がこれを行うことができないとコメントした人は誰でも間違っています。反対に、オラクルを通じて作成者によって署名および検証されない限り、そのような許可を持たないのはアプレットです。

JARに入れない限り、すべて正常に機能するとおっしゃいました。これはおそらく、URI が Windows ファイルシステムに関連しているためです。

通常、参照の周りのパッケージに関係なくファイルを取得する方法は、次のようにすることです。

    MainClass.class.getResourceAsStream(file);

静的な getResourceAsStream は、利用可能な相対パスと絶対パスを解析します。ここに「src/calc.exe」を配置すると、機能するはずです。

別の提案は、プロセスの開口部をスレッド化することです。プログラムをシングル スレッドとして使用している場合、Java プログラムは、外部プロセスがなくなってクリーンアップされるまでハングします。

于 2013-08-09T13:35:15.167 に答える