Java 获取JAR文件中二进制文件的路径
解压时我有一个jar文件,如下所示:Java 获取JAR文件中二进制文件的路径,java,c++,jar,Java,C++,Jar,解压时我有一个jar文件,如下所示: models/ com/ com/github/ com/github/ com/github/test/linux-x86_64/ com/github/test/config/ models/model.bin com/github/test/Test.class 在测试类中,我在getResults方法中使用model.bin的路径,如下所示: public class Test { public List<Label
models/
com/
com/github/
com/github/
com/github/test/linux-x86_64/
com/github/test/config/
models/model.bin
com/github/test/Test.class
在测试类中,我在getResults方法中使用model.bin的路径,如下所示:
public class Test {
public List<Label> getResults(String text, int k) {
// Load model from file
loadModel("models/model.bin");
// Do label prediction
return results(text, k);
}
}
目前,当我在IDE上运行这个时,我得到一个错误,说找不到model.bin文件。如何确定jar文件中model.bin的路径 听起来好像不管loadModel是什么,它都不是标准java的一部分,所以您必须详细说明它需要一个实际的文件。您的model.bin资源不是它,而是jar中的一个条目
检查loadModel是否具有基于InputStream的方法。确实应该,;如果没有,那么不管这是什么库,它都不遵循java约定,并且可能编写得很糟糕
如果有:
try (InputStream in = Test.class.getResourceAsStream("/models/model.bin")) {
loadModel(in);
}
我会成功的
如果没有,天哪。要么自己修复loadModel,让它的作者修复它,要么如果必须解决它,您唯一的选择就是将资源复制到实际文件中,可能是临时目录中,然后使用该临时文件。这不太好。您还可以添加loadModel的实现吗?文件路径的期望值是多少?它是否需要绝对文件路径或类路径资源?我已经更新了LoadModel的更多信息。当我运行您的建议时,我遇到了这个错误:不兼容的类型:java.io.InputStream无法转换为java.lang.StringSee注释“如果没有,无论如何…”
try (InputStream in = Test.class.getResourceAsStream("/models/model.bin")) {
loadModel(in);
}