异常" CASRuntimeException"同时创建自定义Apache UIMA CAS XML描述符

时间:2016-12-23 14:02:01

标签: exception annotations nlp cas uima

我正在尝试添加其他功能"版本"用于存储" uima.cas.Long"在UIMA CAS中键入值。

我已经成功创建了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>

我使用&#34; 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);

我得到&#34; CASRuntimeException&#34;如下所述运行此代码:

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行的CASVersion.java中的代码如下:

50:  public CASVersion(JCas jcas) {
51: super(jcas);
52: readObject();   
53:  } 

由于我第一次这样做,我无法弄清楚如何将我的custom xml描述符与现有的XML类型描述符合并。

如果有人能指导我,那会很棒。

先谢谢。

2 个答案:

答案 0 :(得分:0)

此消息

JCas type "com.example.test.CASVersion" used in Java code,  
but was not declared in the XML type descriptor.

表示存在自定义类型的JCas类,但UIMA不知道描述自定义类型的XML描述符。假设您正在使用uimaFIT,请确保通过创建指向自定义类型的XML描述符的types.txt文件来设置类型系统检测。有关详细信息,请参阅uimaFIT documentation

披露:我正在研究uimaFIT

答案 1 :(得分:0)

当我按照以下方式初始化JCas时,JCas中没有表达新类型:

    JCas document = CasCreationUtils.createCas((TypeSystemDescription) null, null, null).getJCas();

通过以下任何一项替换它来解决这个问题:

    //1st way
    JCas document = JCasFactory.createJCas();

    //2nd way
    TypeSystemDescription tsd = TypeSystemDescriptionFactory.createTypeSystemDescription();
    JCas document = CasCreationUtils.createCas(tsd, null, null).getJCas();