我试图增加额外的功能“版本”存储在UIMA CAS“uima.cas.Long”类型值。例外“CASRuntimeException”,而创建定制的Apache UIMA CAS XML描述
我已经成功地创建XML描述它看起来像如下:产生
以下类
<?xml version="1.0" encoding="UTF-8"?>
<typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier">
<types>
<typeDescription>
<name>CASVersion</name>
<description/>
<supertypeName>uima.cas.TOP</supertypeName>
<features>
<featureDescription>
<name>Version</name>
<description/>
<rangeTypeName>uima.cas.Long</rangeTypeName>
</featureDescription>
</features>
</typeDescription>
</types>
</typeSystemDescription>
我生成使用“UIMA JCasGen”相应的代码:
CASVersion_Type.java
CASVersion.java
现在,我想一个版本添加到JCAS为我写了以下在我的java类代码:
14: public void testAnnotation() {
15: JCas document = CasCreationUtils.createCas((TypeSystemDescription) null, null, null).getJCas();
16: CASVersion version = new CASVersion(document);
17: version.setVersion(1);
我得到 “CASRuntimeException” 上运行此代码如下所述:在CASVersion.java
null
org.apache.uima.cas.CASRuntimeException: JCas type "com.example.test.CASVersion" used in Java code, but was not declared in the XML type descriptor.
at org.apache.uima.jcas.impl.JCasImpl.getTypeInit(JCasImpl.java:456)
at org.apache.uima.jcas.impl.JCasImpl.getType(JCasImpl.java:425)
at org.apache.uima.jcas.cas.TOP.<init>(TOP.java:96)
at com.example.test.CASVersion.<init>(CASVersion.java:51)
at com.example.test.Custom.testAnnotation(Custom.java:15)
代码在51行如下:
50: public CASVersion(JCas jcas) {
51: super(jcas);
52: readObject();
53: }
因为我做的这是我第一次无法弄清楚如何将我的custome xml描述符合并到现有的XML类型描述符中。
将是巨大的,如果任何人都可以指导我在此。
在此先感谢。
我使用uimaFIT和已经尝试过的类型系统检测中提到的两种方法。然而,我仍然得到同样的excep灰。可能是因为uimaFIT的任何依赖关系在POM.xml中缺失并导致此问题? –
假设您在与XML类型描述符和JCas类相同的项目中维护types.txt,那么当Java能够找到JCas类时,uimaFIT应该能够发现该类型 - 在这种情况下,Java会给你一个“ClassNotFoundException的”。您可以通过增加TypeSystemDescription类的日志级别或通过在org.apache.uima.fit.factory.TypeSystemDescriptionFactory.createTypeSystemDescription()中设置断点来调试uimaFIT类型检测。 – rec