我正在开发一个使用Apache UIMA框架来注释文档的项目。由于我必须传递所有文档并在一个for-lopp中处理它们,因此我必须临时存储(复制)当前文档的当前CAS对象,以避免被后续FS和堆值搞砸。 / p>
接下来,我使用CasCopier首先复制当前的CAS并在处理下一个文档之前显示它。
1. public class DocumentAnalysis {
2. public DocumentAnalysis(CAS cas) {
3. this.cas = cas;
4. }
5.
6. public processDocuments(Document documents) {
7. for(Document document: documents) {
8. // process each document, after this method, the cas has all values
9. processSingleDoc(document);
10.
11. // create a new CAS as the destination of copy
12. CAS localCas = CASFactory.createCas().getCas();
13.
14. // copy the current CAS to the new CAS
15. CASCopier.copyCas(this.cas, localCas, true);
16. }
17. }
18.
19. public processSingleDoc(Document document) {
20. // the logic for processing
21. // implement UIMA process() method
22. ......
23. }
24.
25. CAS cas;
26. }
然而,问题是它在第12行抛出了NullPointerException并且我认为getCAS()方法需要indexRepository变量并且我创建的localCas没有该值,这意味着创建新CAS可能不对。
我在网上搜索过,还没有找到任何解决方案。那么有谁知道如何将当前的CAS复制到新创建的CAS?
提前致谢!!!