【问题标题】:How do I run a file using Java? [duplicate]如何使用 Java 运行文件? [复制]
【发布时间】:2015-02-14 01:59:37
【问题描述】:

我需要能够使用 Java 运行 .mp3 文件,我已经尝试过,但无济于事:

Process process = new ProcessBuilder("C:\\Users\\<removed>\\Desktop\\Music\\Cash Cash\\Overtime.mp3")

然后运行

process.start();

但是,它会抛出这个错误:

java.io.IOException: Cannot run program "C:\Users\<removed>\Desktop\Music\Cash Cash\Overtime.mp3": CreateProcess error=193, %1 is not a valid Win32 application
    at java.lang.ProcessBuilder.start(Unknown Source)
    at com.newgarbo.music.Mooseec.main(Mooseec.java:50)
Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32 application
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 2 more

我认为这当然是因为Process 仅适用于可执行文件/jar,如果是这样,那么有人可以告诉我一种运行这些文件的方法吗? ^_^

【问题讨论】:

  • .mp3 文件不是程序。这是一个需要程序来解释其内容并通过扬声器播放的文件。您将需要类似:stackoverflow.com/questions/6045384/…
  • Overtime.mp3 不是可执行文件。您必须运行与 MP3 关联的可执行文件,并将 MP3 文件传递​​给正在运行的进程。
  • 如果你想这样运行它并使用默认程序运行它,只需使用 cmd (shell)。它会默认为您打开它。

标签: java audio


【解决方案1】:

依靠 Windows 文件关联来启动文件,我从来没有这么幸运过。我想到了两个选项:

  1. 使用 wmplayer.exe
  2. 使用 vlc.exe

wmplayer.exe 应该包含在大多数 Windows 安装中(Vista 之后),并且可以使用以下命令运行:

String command = "C:\\Program Files (x86)\\Windows Media Player\\wmplayer.exe";
String argument = "C:\\Users\\<removed>\\Desktop\\Music\\Cash Cash\\Overtime.mp3";
Process process = new ProcessBuilder(command, argument).start();

如果您想保持一致并且不依赖任何可能安装或未安装的东西,您可以将 vlc 与您的应用程序捆绑并使用它。启动过程与上面相同,只是命令的路径需要更改。

【讨论】:

    【解决方案2】:

    您可以使用Desktop.open(File) 来启动相关的应用程序以打开文件。类似,

    File mp3 = new File("C:\\Users\\<removed>\\Desktop\\"
        + "Music\\Cash Cash\\Overtime.mp3");
    Desktop.getDesktop().open(mp3);
    

    【讨论】:

    • 非常感谢!这就像我需要的那样工作!
    • @bernhardkiv 不客气。不是你问的,而是 JavaFX MediaPlayer 也应该允许你用纯 Java 代码玩它。
    • 我会研究一下,这可能比运行它更有用:)
    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 2013-01-01
    • 2016-03-09
    • 2016-07-05
    • 1970-01-01
    相关资源
    最近更新 更多