gpt4 book ai didi

java - 在 netbeans 中正确打包可运行的 Jar 项目

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:46 26 4
gpt4 key购买 nike

所以我的任务是创建一个显示媒体文件列表的小程序,并分别使用默认的 OS 媒体播放器运行这些媒体文件。

我目前的解决方案是创建一个包含所有媒体文件的包,例如:

-com.media
|_a.mp4
|_b.mp4

以下代码将选定的 mp4 复制到临时目录,然后运行默认的 os 媒体播放器:

public File copyTempMedia(File tempAppFolder, String videoName) {

URL f = getClass().getResource(String.format("%s/%s", Constants.MEDIA_LOCATION, videoName));
File from = new File(f.getPath());
File to = new File(tempAppFolder.getAbsolutePath());

try {
FileUtils.copyFileToDirectory(from, to);
} catch (IOException ex) {
Logger.getLogger(MediGUIModel.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Temp video copied: " + to.getAbsolutePath() + "/" + to.getName());
return to;
}

public void triggerMediaPlayer(String fileLocation) {
System.out.println("Triggering media player: " + fileLocation);
try {
if (OPERATIN_SYSTEM.contains("Linux")) {
Runtime.getRuntime().exec("sh -c " + fileLocation);
} else if (OPERATIN_SYSTEM.contains("Windows")) {

Runtime.getRuntime().exec("cmd /c " + fileLocation);
}
} catch (IOException ex) {
Logger.getLogger(MediGUIModel.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
}

当我通过 Netbeans 运行程序时,它按预期工作,但是当我执行 clean/build 时,运行从构建创建的 .jar,媒体文件似乎没有人阅读,所以我的问题是:

  1. 为什么它通过 Netbeans 而不是通过构建 .jar 工作?
  2. 这是这个问题的最佳解决方案吗?
  3. 我应该以不同的方式包装媒体吗?

提前致谢。

编辑

因此,在通过控制台运行而不是双击 jar 后,在我读取文件的行中出现空指针异常:

URL f = getClass().getResource(String.format("%s/%s", Constants.MEDIA_LOCATION, videoName));

为什么它在 Netebeans 中有效但在 build/jar 中无效?

jar 中是否有其他地方可以放置媒体文件,以便通过 getResource 或 getResourceAsStream 毫无问题地读取它们?

最佳答案

当您在 NetBeans 中运行该项目时,它不会运行类似 java -jar yourproject.jar 的可执行 jar .相反,它将类路径设置为 build/classes 有点像 java -cp build/classes com.media.YourMainClass .这意味着您的视频文件是位于 yourproject/build/classes/com/media 中的实际文件,它们可以像文件系统中的普通文件一样访问并像普通文件一样复制。当您从 jar 运行时,文件打包在 jar 文件中,无法使用简单的文件复制命令进行复制。

不是通过调用 getClass().getResource() 来获取 URL ,尝试获取 InputStream调用getClass().getResourceAsStream() .然后,您可以编写一个简单的循环,将字节从输入流复制到您的临时文件。

关于java - 在 netbeans 中正确打包可运行的 Jar 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44099508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com