Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取JAR文件中二进制文件的路径_Java_C++_Jar - Fatal编程技术网

Java 获取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

解压时我有一个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> 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);
}