【发布时间】:2014-09-04 10:59:06
【问题描述】:
我有一个 maven 项目,它的资源打包在 src/main/resources 中。该依赖项使用 weka 库,特别是 AddClassification class,它在其 AddClassification.setOptions() 方法中使用 java.io.FILE 类来读取给定的模型文件。
也许同样重要的是要注意这个项目是其他 maven 项目的依赖项,最终它将被运行在 apache-tomcat 中的 Web 应用程序使用。
为澄清起见,方法AddClassification.setOptions() 是这样调用的:
AddClassification filter = new AddClassification();
filter.setInputFormat(labeled);
String[] options = new String[3];
options[0] = "-serialized";
options[1] = "models/trained.model";
options[2] = "-classification";
filter.setOptions(options);
所以,归结为我的问题和需求:
- 我需要将文件路径字符串传递给
AddClassification.setOptions(); - 我需要使用 weka 库,因为这个小依赖不是我自己编写的;
- 所有模型文件都应该在 Jar 文件 (src/main/resources) 中,以便于分发;
-
java.io.File不会直接读取 Jar 文件中的文件(我查过了); - 我知道
class.getResourceAsStream可以很好地解决这个问题,但是 weka 库需要一个字符串参数来使用java.io.File。
我该如何解决这个问题?我可以轻松地将所有资源复制到硬编码的系统目录,但这会使我的项目难以分发到其他系统。 我正在寻找解决问题的正确方法。
我希望我说得够清楚。
【问题讨论】:
-
你不能,依赖于这样实现的库的编写和设计都很糟糕