1

runnableを実装することでイベントをスレッド化する内部クラスを呼び出す、作業中のプロジェクトのエクスポートに問題があります。Eclipseでは正しく機能しますが、エクスポートすると、内部クラスの開始に失敗します。これは、runnableを実装するクラスでのみ発生します。

これは、エクスポートされたjar形式でのみ発生しますが、Eclipse内で完全に機能します。

私はスレッドを次のように呼んでいます:

new Thread(new SomeRunnable()).start();

SomeRunnableはどこにありますか

public class SomeRunnable implements Runnable {

@Override
public void run() {
    //Create a clip
    try {
        Clip clip;
        clip = AudioSystem.getClip();
        AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
        clip.open(audioIn);
        clip.loop(reps);
    } catch (LineUnavailableException e1) {
        e1.printStackTrace();
        System.exit(0);
    } catch (UnsupportedAudioFileException e1) {
        e1.printStackTrace();
        System.exit(0);
    } catch (IOException e1) {
        e1.printStackTrace();
        System.exit(0);
    }
    System.out.println("Successful.");
}

実行可能なjar形式にエクスポートすると、プログラムは正しく起動してGUIを表示しますが、スレッドSomeRunnableを実行するように指示された場合、クリップを再生しないため、何も実行せず、trycatchステートメントも入力しません。 、プログラムを終了することもありません。これは、jarがクラスファイルを認識しておらず、mainメソッドからそれらを呼び出さないことを示しています。

eclipseがコードを処理する方法とは異なる動作をする原因は何ですか?

4

1 に答える 1

0

実際の解決策は、サウンド ファイルを jar 内に保存していたため、ディレクトリを移動したため、ディレクトリへの参照が機能していなかったことが判明しました。サウンド ファイルが jar の外に移動されると、ファイルが機能して読み取られ、スレッドが実行されました。

于 2012-12-01T19:39:07.587 に答える