【发布时间】:2017-08-03 18:55:15
【问题描述】:
我正在尝试用 Java 创建一个媒体播放器。 为了做到这一点,我传递了一个我的文件所在的字符串,但我收到了一个错误。
操作系统:MacOSX
IDE:Pycharm
@Override
public void start(Stage primaryStage) throws Exception{
String file="~/Users/ViditShah/IdeaProjects/MediaPlayer/src/sample/1.mp4";
Player player = new Player(file);
Scene scene = new Scene(player,720,480, Color.BLACK);
primaryStage.setScene(scene);
primaryStage.show();
}
玩家等级:
public class Player extends BorderPane {
Media media;
MediaPlayer player;
MediaView view;
Pane apane;
Player(String file)
{
media =new Media(file);
player = new MediaPlayer(media);
view = new MediaView(player);
apane.getChildren().add(view);
setCenter(apane);
}
}
解析文件字符串时显示错误。 我想我在定位文件路径时犯了一个错误,未能找到解决方案。
【问题讨论】:
-
您的主目录中有一个名为
Users的文件夹?这似乎不太可能。我不知道Player是什么,并且在不知道的情况下,不可能真正回答这个问题,但是JavaFX 中大多数期望某种资源的方法都期望传递一个URL(或URL 的字符串形式),而不是文件路径。 -
~ 是外壳而不是 Java。您必须使用完整路径或 getenv $HOME。或者,您可以使用“user.home”属性。
-
@James_D 我已经添加了播放器类代码,并且在桌面上也有媒体文件的副本。我需要输入字符串的路径
-
那条永远行不通的路径,Java 不知道
~是什么。 -
阅读documentation:“Media 类表示媒体资源。它是从源 URI 的字符串形式实例化的。”因此,您根本不应该在这里传递文件路径。看起来 mp4 是您实际项目的一部分(而不是用户文件系统上的东西) - 因此一旦部署了您的应用程序,它根本就不是文件,它将捆绑在包含应用程序的 jar 文件中。该类是否包含您在与 mp4 相同的包中发布的代码?