我正在开发带有Web服务的Java应用程序,该服务必须提供REST API来借助Apache UIMA SDK
(更多信息here)来注释文本。
该Web服务工作正常。我将Apache Tomcatv9
与catalina
一起使用,并向UIMA
添加了支持,我在UIMA_HOME\lib
文件夹中的CATALINA_HOME\lib
中添加了jar。这样,服务器可以知道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>
您可以看到XML中的annotatorImplementationName
与类的相对路径匹配。
我在另一个项目(没有Tomcat
)中测试了注释器本身,它可以找到该类。
我想问题是服务器无法达到该级别,但是我不明白为什么。你有什么想法吗?谢谢。