【问题标题】:Where do i put file(.mp3) in order for it to be read?我应该把文件(.mp3)放在哪里才能被读取?
【发布时间】:2016-04-09 18:42:57
【问题描述】:

我正在使用 JavaFx 播放音乐文件的方法,但它不起作用(声音不播放)。我觉得问题出在我的文件位置。我在哪里将 .mp3 放在我的 java 项目文件夹中,以便用一个简单的字符串引用它?还是有其他方法可以引用它? JavaFX Media 采用 String 参数。

String test = "test.mp3";
Media x = new Media(test);
MediaPlayer mediaPlayer = new MediaPlayer(x);
mediaPlayer.play();

【问题讨论】:

  • 您是否已经尝试将文件路径与文件一起传递?比如“C:/Users/You/Documents/Java Projects/Project 1/test.mp3”
  • 是的,它给了我一个错误,提到非法字符。我在引用的库中添加了一个资源文件夹,无论程序在哪个硬盘上运行,我都可以在其中引用文件,但在这种情况下也不起作用。

标签: java javafx-2


【解决方案1】:

如果您阅读过Media 的JavaDoc,那么您就知道必须为您正在使用的构造函数提供http、文件或jar URI。
实际上,通过查看源代码,我想知道您没有收到IllegalArgumentException

但是,请使用 Class.getResource(...).toURI().toString() 获取您要提供给 Media 构造函数的字符串。
您调用它的 Class 对象以及您为 getResource() 方法提供的内容的组合取决于您如何布局文件。
如果您在课堂之外还有文件,getClass().getResource("file.name") 应该可以工作。
如果您的文件位于类路径的根目录中,getClass().getResource("/file.name") 应该可以。

当然,您也可以将任何其他有效的 http、文件或 jar URI 提供给构造器。

【讨论】:

  • 这是我的完整方法 public static void playSong() String test = getClass().getResource("test2.mp3").toURI().toString();媒体 x = 新媒体(测试);媒体播放器 mediaPlayer = 新媒体播放器(x);媒体播放器.play();在 getClass() 下,它给出了一个错误 Cannot make a static reference to the non-static method getClass() from the type Object。我将 test2.mp3 文件与我的 Sound 类(包含此方法的类)放在同一个包中。很抱歉这个奇怪的评论。我是这个网站的新手
  • 好吧,如果你在静态上下文中,不要使用getClass(),而是使用YourClassName.class
  • 感谢您的帮助,它成功了。对于查看此内容并遇到 Toolkit 未初始化问题的人,请参阅:tech.chitgoks.com/2013/05/11/… 对于媒体播放器在 5 秒后静音有问题的人,请参阅:stackoverflow.com/questions/6241687/…
猜你喜欢
  • 1970-01-01
  • 2010-12-01
  • 2018-09-28
  • 2019-10-04
  • 1970-01-01
  • 2011-11-24
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多