使用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”),如果你不希望它初始化法语等等但这仍然无法解决我的问题!

解决方法

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

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...