簡體   English   中英

創建自定義Apache UIMA CAS XML描述符時出現“CASRuntimeException”異常

[英]Exception “CASRuntimeException” while creating custom Apache UIMA CAS XML descriptor

我正在嘗試添加附加功能“版本”,用於在UIMA CAS中存儲“uima.cas.Long”類型值。

我已經成功創建了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”,如下所述:

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)

CASVersion.java第51行的代碼如下:

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

由於我是第一次這樣做,我無法弄清楚如何將我的自定義xml描述符合並到現有的XML類型描述符。

如果有人能指導我這將是偉大的。

提前致謝。

這條信息

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文檔

披露:我正在研究uimaFIT

當我按照以下方式初始化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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM