1

我在导出我正在处理的项目时遇到问题,该项目通过实现可运行来调用线程事件的内部类。它在eclipse中可以正常工作,但是在导出时,它会无法启动内部类。这只发生在实现可运行的类中。

这仅在导出的 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.");
}

导出为runnable jar格式后,程序会正确启动并显示GUI,但是当它被告知运行线程SomeRunnable时,它什么也不做,甚至不进入try catch语句,因为它不播放剪辑,也不退出程序。这表明 jar 无法识别类文件并且不会从 main 方法调用它们。

什么会导致 jar 的工作方式与 eclipse 处理代码的方式不同?

4

1 回答 1

0

It turns out the actual solution was that I was storing my sound files inside the jar, thus my references to the directories were not working, because it had moved the directories. When the sound files were moved to outside of the jar, it worked and read the files and ran the threads.

于 2012-12-01T19:39:07.587 回答