UIMA - ResourceInitializationException: класс не найден - PullRequest
0 голосов
/ 11 ноября 2018

Я разрабатываю 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 не может быть найден.
Это структура проекта: enter image description here в то время как это код дескриптора 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), и он может найти этот класс.
Я предполагаю, что проблема в том, что сервер не может достичь этого класса, но я не могу понять, почему. У вас есть идеи по этому поводу? Спасибо.

...