首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIMA :无法初始化JCas /找不到脚本

UIMA :无法初始化JCas /找不到脚本
EN

Stack Overflow用户
提问于 2019-10-22 12:55:49
回答 1查看 173关注 0票数 2

我试图在uimaFIT管道中集成uimaFIT脚本(Main.ruta) (在Main.java中),但是找不到脚本。这是我的项目结构:

代码语言:javascript
复制
uima-ruta-maven-test-project/src/main/Main.java
uima-ruta-maven-test-project/script/ruta/Main.ruta
uima-ruta-maven-test-project/descriptor/ruta/MainEngine.xml

下面是我创建AnalysisEngineDescription的代码

代码语言:javascript
复制
File file = new File("descriptor/ruta/MainEngine.xml");

AnalysisEngineDescription rutaScript = AnalysisEngineFactory.createEngineDescriptionFromPath(
                    file.getPath(),
                    RutaEngine.PARAM_SCRIPT_PATHS, "script",
                    RutaEngine.PARAM_MAIN_SCRIPT, "Main.ruta");

这是我的控制台输出:

代码语言:javascript
复制
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
SLF4J: Defaulting to no-operation MDCAdapter implementation.
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
org.apache.uima.resource.ResourceInitializationException: Initialization of annotator class "org.apache.uima.ruta.engine.RutaEngine" failed.  (Descriptor: file:/D:/Programming/MA/uima-ruta-maven-test-project/descriptor/ruta/MainEngine.xml)
    at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:260)
    at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:173)
    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:289)
    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:417)
    at org.apache.uima.analysis_engine.asb.impl.ASB_impl.setup(ASB_impl.java:256)
    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initASB(AggregateAnalysisEngine_impl.java:435)
    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initializeAggregateAnalysisEngine(AggregateAnalysisEngine_impl.java:379)
    at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.initialize(AggregateAnalysisEngine_impl.java:192)
    at org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
    at org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:289)
    at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:341)
    at org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:458)
    at org.apache.uima.fit.pipeline.SimplePipeline.runPipeline(SimplePipeline.java:178)
    at Main.main(Main.java:52)
Caused by: org.apache.uima.resource.ResourceInitializationException
    at org.apache.uima.ruta.engine.RutaEngine.initialize(RutaEngine.java:579)
    at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.lambda$callInitializeMethod$2(AnalysisEngineImplBase.java:612)
    at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.withContexts(AnalysisEngineImplBase.java:653)
    at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.callInitializeMethod(AnalysisEngineImplBase.java:612)
    at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:252)
    ... 16 more
Caused by: org.apache.uima.analysis_engine.AnalysisEngineProcessException
    at org.apache.uima.ruta.engine.RutaEngine.initializeScript(RutaEngine.java:857)
    at org.apache.uima.ruta.engine.RutaEngine.initialize(RutaEngine.java:576)
    ... 20 more
Caused by: java.io.FileNotFoundException: Script [Main.ruta] cannot be found at [script;D:\Programming\MA\uima-ruta-maven-test-project] or classpath with extension .ruta
    ... 22 more

控制台输出的最后一行似乎显示了错误。Main.ruta是在路径[script;D:\Programming\MA\uima-ruta-maven-test-project]中搜索的,这显然不存在,因为它是无效路径。我认为createEngineDescriptionFromPath方法应该将"script"文件夹附加到项目路径。但取而代之的是它的优势。

有人能帮我一下吗?

编辑

我已经找到了链接,其中解释了参数mainScriptscriptPaths的用法。这些路径必须用“。”而不是"/“。

我修改了代码如下:

代码语言:javascript
复制
AnalysisEngineDescription rutaScript = AnalysisEngineFactory.createEngineDescriptionFromPath(
                    file.getPath(),
                    RutaEngine.PARAM_SCRIPT_PATHS, "script.ruta",
                    RutaEngine.PARAM_MAIN_SCRIPT, "script.ruta.Main");

但是现在我得到了这个控制台输出:

代码语言:javascript
复制
Exception in thread "main" org.apache.uima.cas.CASRuntimeException: The JCas cannot be initialized.  The following errors occurred: 
JCas Class "org.apache.uima.ruta.type.AnyLine", loaded from "jar:file:/C:/Users/user/.m2/repository/org/apache/uima/ruta-typesystem/2.7.0/ruta-typesystem-2.7.0.jar!/org/apache/uima/ruta/type/AnyLine.class", is missing required constructor; likely cause is wrong version (UIMA version 3 or later JCas required).
JCas Class "org.apache.uima.ruta.type.EmptyLine", loaded from "jar:file:/C:/Users/user/.m2/repository/org/apache/uima/ruta-typesystem/2.7.0/ruta-typesystem-2.7.0.jar!/org/apache/uima/ruta/type/EmptyLine.class", is missing required constructor; likely cause is wrong version (UIMA version 3 or later JCas required).
JCas Class "org.apache.uima.ruta.type.WSLine", loaded from "jar:file:/C:/Users/user/.m2/repository/org/apache/uima/ruta-typesystem/2.7.0/ruta-typesystem-2.7.0.jar!/org/apache/uima/ruta/type/WSLine.class", is missing required constructor; likely cause is wrong version (UIMA version 3 or later JCas required).
...
at org.apache.uima.cas.impl.FSClassRegistry.reportErrors(FSClassRegistry.java:1284)
at org.apache.uima.cas.impl.FSClassRegistry.loadJCasForTSandClassLoader(FSClassRegistry.java:400)
at org.apache.uima.cas.impl.FSClassRegistry.getGeneratorsForClassLoader(FSClassRegistry.java:1320)
at org.apache.uima.cas.impl.TypeSystemImpl.getGeneratorsForClassLoader(TypeSystemImpl.java:2924)
at org.apache.uima.cas.impl.TypeSystemImpl.commit(TypeSystemImpl.java:1442)
at org.apache.uima.cas.impl.CASImpl.commitTypeSystem(CASImpl.java:1822)
at org.apache.uima.util.CasCreationUtils.doCreateCas(CasCreationUtils.java:620)
at org.apache.uima.util.CasCreationUtils.createCas(CasCreationUtils.java:292)
at org.apache.uima.fit.pipeline.SimplePipeline.runPipeline(SimplePipeline.java:181)
at Main.main(Main.java:52)

似乎无法初始化Ruta类型。我的pom.xml中有UIMARutaVersion2.7.0和UIMA2.0.0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-17 13:39:55

看起来uimaFit 2与UIMA v3和其他依赖它的库(本例中是uimaFit,DKPro )不太协调。

在我的例子中,我使用了以下版本: DKPro 1.11.0、UIMA2.10.4、UIMARuta2.7.0和uimaFit 2.4.0 (也请参阅这个问题)。

UIMA Ruta 3最近发布了。我想这个版本将更好地与UIMA v3一起工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58504829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档