Java 我的程序100%从编译器put运行,而不是100%从dist运行
如果我从编译器netbeans运行java progeam,它将100%运行。如果我从文件管理器运行它,它将位于项目内的dist文件夹中(该程序有一个运行wav文件的按钮)按钮有一个catch ioexception如果我从编译器运行它声音将运行put如果我从dist文件夹运行它或移动然后运行到任何路径有ioexception作为参数的catch将运行exception我使用audioSystem并使用Clip类对其进行咳嗽因此如果第一种方式出现任何异常,Clip类将尝试运行声音文件代码:Java 我的程序100%从编译器put运行,而不是100%从dist运行,java,ioexception,Java,Ioexception,如果我从编译器netbeans运行java progeam,它将100%运行。如果我从文件管理器运行它,它将位于项目内的dist文件夹中(该程序有一个运行wav文件的按钮)按钮有一个catch ioexception如果我从编译器运行它声音将运行put如果我从dist文件夹运行它或移动然后运行到任何路径有ioexception作为参数的catch将运行exception我使用audioSystem并使用Clip类对其进行咳嗽因此如果第一种方式出现任何异常,Clip类将尝试运行声音文件代码: pu
public void getSoundData(int delay){
ActionListener taskPerformer = new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
try{
int random=(int)(Math.random()*12+1);
InputStream input = new FileInputStream("src/azcar/sounds/"+String.valueOf(random)+".wav");
AudioStream audio = new AudioStream(input);
AudioPlayer.player.start(audio);
} catch (Exception exc) {
try {
Clip clip = AudioSystem.getClip();
int random=(int)(Math.random()*12+1);
AudioInputStream input = AudioSystem.getAudioInputStream(new File("src/azcar/sounds/"+String.valueOf(random)+".wav"));
clip.open(input);
clip.start();
} catch (LineUnavailableException ex) {
JOptionPane.showMessageDialog(null, ex);
} catch (UnsupportedAudioFileException ex) {
JOptionPane.showMessageDialog(null, "نوع ملفات الصوت غير مدعوم");
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "لم أتمكن من االوصول لملفات الصوت");
}
}
}
};
Timer timer = new Timer(delay*1000*60,taskPerformer);
timer.setRepeats(true);
timer.start();
}
在上面,您使用的是相对路径来查找wav文件。从项目的根文件夹中,您将阅读'src/azcar/sounds/.wav',但从dist文件夹中,您实际上是在阅读'dist/src/azcar/sounds/.wav'
您可以首先输入文件夹的绝对路径来开始测试。之后,您可以将声音文件夹路径作为变量传递给应用程序。不确定这里的问题是什么,也许可以详细说明您的解决方案并与他人共享代码,以便更好地理解该问题?谢谢我编写了代码如果没有“src/azcar/sounds”,您使用的路径是相对的将可执行文件移动到的文件夹中,程序将找不到所需的文件