【问题标题】:JavaFX MEDIA_UNAVAILABLE in JAR fileJAR 文件中的 JavaFX MEDIA_UNAVAILABLE
【发布时间】:2013-01-20 19:04:54
【问题描述】:

我目前正在尝试让 JavaFX 媒体播放器工作,并且在打包我的应用程序时在定位我的媒体文件时出现了一些奇怪的行为。在 eclipse 中运行它时它工作得很好,但是一旦我用 maven 将它打包为一个 jar,就无法再找到媒体文件,并且我收到以下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.simontuffs.onejar.Boot.run(Boot.java:340)
    at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: MediaException: MEDIA_UNAVAILABLE : \resources-0.0.1-SNAPSHOT.one-jar.jar     
(Das System kann die angegebene Datei nicht finden)
    at javafx.scene.media.AudioClip.<init>(AudioClip.java:65)
    at com.example.test.MyResourceTest.getResource(MyResourceTest.java:11)
    at com.example.test.MyResourceTest.main(MyResourceTest.java:18)
    ... 6 more

错误原因表明系统找不到给定的文件。有趣的是,它实际上在一个 jar 文件中可用,因此它应该可以工作。这对我来说是一种表演停止,我无法从 Oracle 论坛得到任何回复。

我上传了我的简单 Eclipse 项目供任何人尝试: http://www.fileswap.com/dl/itytDY7mcY/

否则这是代码:

public class MyResourceTest {

    public String getResource() {
        final URL sound = getClass().getResource("/com/example/data/sound.mp3");
        AudioClip soundEffect = new AudioClip(sound.toString());
        return sound.toString();
    }

    public static void main(String[] args) {
        System.out.println(new MyResourceTest().getResource());
    }
}

【问题讨论】:

    标签: javafx-2 javafx executable-jar


    【解决方案1】:

    其实我刚刚找到了一个很好的方法来解决这个问题 使用:

     getHostServices().getDocumentBase()
    

    在您的应用程序类中获取文档库, 然后使用类似的东西

     Media media = new Media(documentBase + "/resources/" + name + ".mp3");
     player = new MediaPlayer(media);
    

    或者在你的情况下:

    Media media = new Media(documentBase + "/com/example/data/sound.mp3");
    player = new MediaPlayer(media);
    

    (仅当您使用 javafx 应用程序时才有效)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 2021-04-24
      • 2013-03-24
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2014-06-27
      相关资源
      最近更新 更多