我正在尝试添加其他功能"版本"用于存储" 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类型描述符合并。
如果有人能指导我,那会很棒。
先谢谢。
答案 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();