使用langdetect进行Java语言检测 – 如何加载配置文件?

我正在尝试使用一个名为langdetect的 Java库托管 here.它使用起来非常简单:
Detector detector;
String langDetected = "";
try {
    String path = "C:/Users/myUser/Desktop/jars/langdetect/profiles";
    DetectorFactory.loadProfile(path);
    detector = DetectorFactory.create();
    detector.append(text);
    langDetected = detector.detect();
} 
catch (LangDetectException e) {
    throw e;
}

return langDetected;

除了DetectFactory.loadProfile方法之外.当我传递一个绝对文件路径时,这个库工作得很好,但最终我想我需要在同一个JAR文件中打包我的代码和langdetect的配套文件目录:

myapp.jar/
    meta-inf/
    langdetect/
        profiles/
            af
            bn
            en
            ...etc.
    com/
        me/
            myorg/
                LangDetectAdaptor --> is what actually uses the code above

我将确保位于myapp.jar内的LangDetectAdaptor提供了langdetect在运行时工作所需的langdetect.jar和jsonic.jar依赖项.但是我很困惑我需要传递给DetectFactory.loadProfile才能工作:

> langdetect JAR附带了profiles目录,但您需要从JAR内部初始化它.那么我是否要复制配置文件目录并将其放在我的JAR中(就像我在上面规定的那样),或者有没有办法将它保存在langdetect.jar中但是从我的代码中访问它?

在此先感谢您的帮助!

编辑:我认为这里的问题是langdetect附带此配置文件目录,但后来要求您从JAR内部初始化它. API可能会受益于稍微改变一下,只考虑配置文件自己的配置,然后提供像DetectFactory.loadProfiles()的方法.除了(“fr”),如果你不希望它初始化法语等等但这仍然无法解决我的问题!

解决方法

看起来该库只接受文件.您可以更改代码并尝试向上游提交更改.或者将您的资源写入临时文件并让它加载它.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...