我在导出我正在处理的项目时遇到问题,该项目通过实现可运行来调用线程事件的内部类。它在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 处理代码的方式不同?