我試圖增加額外的功能「版本」存儲在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