Hi,
I’ve developing GUI application OmegaT which uses LanguageTool 6.1 as optional dependency for users.
Currently, we bundle all the language-* modules with an application distribution as same as other depended libraries.
Because LanguageTool is not mandatory for running the application, I’d like to made language-* jar files as plugins and dynamic loading after starting the application.
When trial, I found LanguageTool-core does not recognize these class paths because it is initialized in static context. So I tried to use Languages.getOrAddLanguageByClassName
to pass dynamic loaded org.languagetool.language.French
of language-fr-6.1.jar
but it raises ClassNotFound error.
The class org.languagetool.language.French
can be loaded by this.class.getClassLoader().loadClass("org.langaugetool.language.French")
successfully, so languagetool has special treatment for it.
I’m also trying custom ClassBroker
definition that is
public static class ClassBrokerBroker implements ClassBroker {
public Class<?> forName(String classname) {
ClassLoader classloader = ClassBrokerBroker.class.getClassLoader();
return classloader.loadClass(classname);
}
}
that load the class org.languagetool.language.French
but it also raises ClassNotFound error for org.languagetool.language.tagger.fr.FrenchTagger
class.
I’d like to contribute for improvement, I’ve start topic PR in feat: allow loading language-* module as plugins in application by miurahr · Pull Request #9447 · languagetool-org/languagetool · GitHub
to make things delayed to happened to make language list just when languagetool accessed.