【问题标题】:How to give path of the music file that is inside the Java package?如何给出 Java 包内的音乐文件的路径?
【发布时间】:2018-01-23 18:38:50
【问题描述】:

我在我的 Java 项目中创建了一个名为声音的包,我的声音在这个包中。但是,我收到此代码的 java.io.FileNotFoundException 错误。那么我怎样才能给出这个文件的路径呢?

  path="sounds/hit.wav"

路径如上所示

  public class Sound {

AudioInputStream audio;
Clip clip;
//String path;

public void play(String path)
{
    try{
        File soundFile =new File(path);
        audio = AudioSystem.getAudioInputStream(soundFile);
        clip = AudioSystem.getClip();
        clip.open(audio);
        clip.start();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
}

我也试过这个,它给出了一个 IOException:

    clip.open(AudioSystem.getAudioInputStream(
        new BufferedInputStream(getClass().getResourceAsStream("/sounds/hit.wav"))));

你能告诉我如何解决这个问题吗?

这是我的文件结构:

【问题讨论】:

  • 什么是 AudioSystem.getAudioInputStream();方法作为参数?字符串还是文件?
  • 对不起,我编辑了,是文件。
  • 是的,这就是我最初所做的,但它给出了 java.io.FileNotFoundException 错误。
  • Java 不会以某种方式将这些文件填充到您编译的字节码中。你必须得到一个构建过程来制作一个包含这些文件的 jar。我猜 Eclipse 可以从项目构建一个 jar,但我会让 Maven 使用 语句将该目录包含在 jar 构建中,然后使用 @Michał Tabor 的解决方案在运行时从 jar 加载它。

标签: java audio javasound


【解决方案1】:
URL urlToHit = this.getClass().getResource("/edu/iyte/ceng316/resource/hit.wav");
System.out.println(urlToHot);

【讨论】:

    【解决方案2】:

    也许:

    clip.open(AudioSystem.getAudioInputStream(getClass().getResourceAsStream("sounds/hit.wav"));
    

    【讨论】:

    • 还是 java.lang.NullPointerException。
    • NPE 表示该文件在给定目录中不存在。我给您的代码尝试从与 Java 类所在位置相同的目录中获取 hit.wav 文件。你的情况是这样吗?
    • 声音和Java类在不同的包中。
    • 您能否编辑您的问题并发布您的目录结构,以便我查看它的外观?
    • 现在可以看看吗?
    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2018-08-12
    • 2012-10-17
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多