我正在netbeans中制作一个小型的Java音乐播放器应用程序(不适用于android)。我们在项目中创建了一个资产文件夹,其中包含音乐播放器应该播放的内容。我们所有的功能都在工作,如果我们无法弄清楚如何从项目地图中调出这首歌。我们现在已经在特定位置硬编码了,但是它不能在不同的计算机上工作。
有人有解决方案,以便我们可以在项目地图中调出歌曲吗?
答案 0 :(得分:0)
鉴于项目中有Assets
文件夹,您可以执行以下操作:
initializeAudio("Assets/my_cool_song.wav");
其中initializeAudio
依赖于Clip
对象的类级声明:
private void initializeAudio(final File url) {
try {
if (clip != null) stopPlay();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(url);
clip = AudioSystem.getClip();
clip.open(inputStream);
} catch (Exception e) {
stopPlay();
System.err.println(e.getMessage());
}
}
这适用于所有带有项目(或JAR)的计算机,而initializeAudio("/Users/myusername/Developer/Projects/AudioApp/Assets/my_cool_song.wave");
不起作用的原因是因为一个依赖于硬编码的绝对路径,而另一个依赖于文件路径相对于项目的结构。创建相对路径时,假装项目的基本目录全部存在。
因此,例如,如果您的项目结构是包含子MyProject
,Assets
,src
和bin
的{{1}}文件夹,并且您想要要引用util
文件夹中的某个项目,请沿着这样的路径传递:util