我有一个包含需要在运行时加载的捆绑资源(语言模型二进制文件)的 jar 文件。jar中的目录结构是
标记器/app.class
标记器/models/stop/SentDetect.bin.gz
其中 SentDetect.bin.gz 是二进制 whos 路径作为字符串参数加载到第三方类 (SentDetector) 中,即
URL url = this.getClass().getResource("models/stop/SentDetect.bin.gz");
SentenceDetector sdetector = new SentenceDetector(url.getPath());
虽然它在 Netbeans 中运行正常,但当我尝试从命令行将它作为 jar 运行时,我在构造函数中收到 FileNotFound 异常。我已经仔细检查了二进制文件是否包含在编译的 Jar 文件中。
我相信解决方案通常是使用 getResourceAsStream() 将数据作为输入流加载,但这不是一个选项,因为 url 作为字符串参数传递给第三方构造函数,这让我相信问题在于如何将 url 解析为字符串?
我努力了:
url.getPath();
url.getFile();
url.toURI().getPath();
url.toString();
并且所有人都在为文件提供不同的路径。