我只需要在运行时位于资源目录中的 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 中的文件夹层次结构如下图所示。
最佳答案
不幸的是,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/