getClass()。getClassLoader()。getResource(path)总是返回null,即使路径是正确的

时间:2014-03-18 05:49:16

标签: java

我正在使用Java项目执行此操作而不是动态Web项目,我只是将 .wav 文件直接放到项目中(在项目名称上右键单击n粘贴)。

我试过阅读很多帖子但没有用。帮助我。我试着阅读很多帖子但没有用。

try{
      // Open an audio input stream.
      URL url = this.getClass().getClassLoader().getResource("Rain.wav");
      System.out.println("url:"+url);
      AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);
      // Get a sound clip resource.
      Clip clip = AudioSystem.getClip();
      clip.open(audioIn);
      clip.start();
      /* clip.loop(Clip.LOOP_CONTINUOUSLY);  */
 } catch (UnsupportedAudioFileException e) {
      e.printStackTrace();
 }

2 个答案:

答案 0 :(得分:2)

  

getClass()。getClassLoader()。getResource(path)总是返回null,即使路径正确

不,不。

  

我刚把我的.wav文件放到了项目

完全。那是错误的地方。你的道路不正确。您的Rain.wav文件需要以您查找的方式位于JAR文件的根目录中。该项目的根本与它无关。

答案 1 :(得分:1)

从Spring Boot JAR加载文件

如果您想从Spring Boot JAR中的类路径加载文件,则必须使用resource.getInputStream()方法将其作为InputStream检索。如果尝试使用resource.getFile(),则会收到错误消息,因为Spring尝试访问文件系统路径,但无法访问JAR中的路径。

Resource resource = resourceLoader.getResource("classpath:GeoLite2-Country.mmdb"); InputStream dbAsStream = resource.getInputStream()

[博客]:https://smarterco.de/java-load-file-from-classpath-in-spring-boot/