Я разрабатываю Java-приложение с веб-службами, которое должно предоставлять REST API для аннотирования текста с помощью Apache UIMA SDK
(подробнее здесь ).
Веб-сервис работает отлично. Я использовал Apache Tomcatv9
с catalina
и для добавления поддержки к UIMA
я добавил банки, содержащиеся в UIMA_HOME\lib
в папке CATALINA_HOME\lib
. Таким образом, сервер знает о классах, предоставленных UIMA SDK
.
Учитывая это, когда я создаю экземпляр Analysis Engine
здесь:
XMLInputSource in = new XMLInputSource(eclipseWorkspacePath + "\\annotator\\desc\\provaDesc.xml");
ResourceSpecifier specifier =UIMAFramework.getXMLParser().parseResourceSpecifier(in);
AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
выдает ResourceInitializationException
, говоря, что класс NumberAnnotator
не может быть найден.
Это структура проекта:
в то время как это код дескриптора AnalysisEngine provaDesc.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
<frameworkImplementation>org.apache.uima.java</frameworkImplementation>
<primitive>true</primitive>
<annotatorImplementationName>org.wolf.uima.annotator.NumberAnnotator</annotatorImplementationName>
<analysisEngineMetaData>
<name>provaDesc</name>
<description/>
<version>1.0</version>
<vendor/>
<configurationParameters/>
<configurationParameterSettings/>
<typeSystemDescription>
<imports>
<import location="provaTypeSystem.xml"/>
</imports>
</typeSystemDescription>
<typePriorities/>
<fsIndexCollection/>
<capabilities>
<capability>
<inputs/>
<outputs>
<type allAnnotatorFeatures="true">org.wolf.uima.model.Numero</type>
</outputs>
<languagesSupported/>
</capability>
</capabilities>
<operationalProperties>
<modifiesCas>true</modifiesCas>
<multipleDeploymentAllowed>true</multipleDeploymentAllowed>
<outputsNewCASes>false</outputsNewCASes>
</operationalProperties>
</analysisEngineMetaData>
<resourceManagerConfiguration/>
</analysisEngineDescription>
Вы можете видеть, что annotatorImplementationName
в XML совпадает с относительным путем к классу.
Я протестировал сам аннотатор в другом проекте (без Tomcat
), и он может найти этот класс.
Я предполагаю, что проблема в том, что сервер не может достичь этого класса, но я не могу понять, почему. У вас есть идеи по этому поводу? Спасибо.