gpt4 book ai didi

java - 如何从构建路径中的可运行jar文件中获取资源文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:23:23 25 4
gpt4 key购买 nike

我只需要在运行时位于资源目​​录中的 jar 文件中的文件...

我知道一些方法就像...但它只能读取图像

ImageIO.read(Login.class.getResource("res/images/icon.png"));

在这里,我可以从 JAR 中的目录中读取图像,该目录被添加到 eclipse 中的构建路径中,但是我在从 resources/cascades/获取一些“.so”文件和一些“cascade_hand.xml”文件时遇到了一些问题... , 我需要它们在运行时从可运行的 .JAR 文件中可用。

我也试过这个..但是这不起作用..

CascadeClassifier cascade = new CascadeClassifier(
"resources/cascades/haarcascade_mcs_leftear.xml");

这也行不通...

CascadeClassifier cascade = new CascadeClassifier(this.getClass().getResourceAsStream("resources/cascades/haarcascade_mcs_leftear.xml");

我知道有办法将该文件复制到某个临时目录并使用它们,但我真的不知道该怎么做?

InputStream is = this.getClass().getResourceAsStream("resources/cascades/haarcascade_mcs_leftear.xml");

有没有其他方法可以从 Runnable JAR 访问该类型的文件?

我在用 eclipse 创建的 jar 文件中也遇到了一些问题。

Eclipse 创建 Runnable jar 文件并在构建路径中的 jar 文件中创建资源目录的目录,但实际上所有这些都创建为 jar 文件中的一个父目录。

我在 eclipse 中的文件夹层次结构如下图所示。

enter image description here

最佳答案

不幸的是,OpenCV 以 native 代码读取文件,因此唯一的方法是先将数据复制到临时文件。

String tempDir="tmp"; //TODO: use a sensible default
Path tmp = Files.createTempFile(tempDir, "cv");
Files.copy(Login.class.getResourceAsStream(
"resources/cascades/haarcascade_mcs_leftear.xml"), tmp);
CascadeClassifier cascade = new CascadeClassifier(tmp.toString());

关于java - 如何从构建路径中的可运行jar文件中获取资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25663364/

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