Hm, does the stack trace you posted match the source?
Line 85, for example, doesn't contain any executable
code.

What would really help here is if you could put together
a test case that we can run.  Unless Marshall can see
the issue just from looking at the code, that is really
your best option.  Create a test case, zip it up, and
attach it to a Jira issue (with instructions on how to
run and reproduce the problem).

Thanks,
Thilo

ISAO Isaac Saito wrote:
> Thanks Marshall,
> I attach the stack trace and java code below.
> 
> <exception>
> Exception in thread "main" java.lang.NullPointerException
>       at org.apache.uima.cas.impl.CASImpl.ll_getFSForRef(CASImpl.java:2745)
>       at 
> jp.ac.keio.dmc.context.srw.types.PersonWikip.getCompany_related(PersonWikip.java:233)
>       at 
> jp.ac.keio.dmc.context.srw.SRWikipediaMain.extractNeeFromText(SRWikipediaMain.java:120)
>       at 
> jp.ac.keio.dmc.context.srw.SRWikipediaMain.extractNeeFromWebdoc(SRWikipediaMain.java:85)
>       at 
> jp.ac.keio.dmc.context.srw.SRWikipediaMain.extractNamedentity(SRWikipediaMain.java:67)
>       at 
> jp.ac.keio.dmc.context.srw.SRWikipediaMain.<init>(SRWikipediaMain.java:47)
>       at 
> jp.ac.keio.dmc.context.srw.SRWikipediaMain.main(SRWikipediaMain.java:210)
> </exception>
> 
> 
> - PersonWikip.java
> I don't attach because it is nothing special that is generated
> automatically after defining Type System Definition on Component
> descriptor editor.
> 
> 
> - whole code of SRWikipediaMain.java
> # You might feel the code verbose because I paste the whole...
> 
> <SRWikipediaMain.java>
> 1: package jp.ac.keio.dmc.context.srw;
> 2:
> 3: import java.io.IOException;
> 4: import java.util.LinkedList;
> 5:
> 6: import jp.ac.keio.dmc.context.srw.types.PersonWikip;
> 7: import jp.ac.keio.dmc.context.util.http.DMCHttpClient;
> 8: import net.lateeye.util.uima.AnalysisEngineUtil;
> 9:
> 10: import org.apache.uima.analysis_engine.AnalysisEngine;
> 11: import org.apache.uima.cas.FSIndex;
> 12: import org.apache.uima.cas.FSIterator;
> 13: import org.apache.uima.jcas.JCas;
> 14: import org.apache.uima.jcas.cas.StringArray;
> 15: import org.apache.uima.util.XMLInputSource;
> 16:
> 17: import com.ibm.omnifind.ne.types.Company;
> 18: import com.ibm.omnifind.ne.types.Org;
> 19:
> 20: public class SRWikipediaMain {
> 21:   private static String path_eclipseWorkspace_root =
> "C:/data/app/workspace_eclipse/";
> 22:   private static String path_ibmNeeDesc = path_eclipseWorkspace_root
> 23:                   + "tae_nee_apacheUima/" + "desc/";
> 24:   private static String path_srwAeDesc = path_eclipseWorkspace_root
> 25:                   + "srwikipedia/" + "descriptor/";
> 26:   private static String uimaDesc_personWikip = path_srwAeDesc
> 27:                   + "KeioWikipAnnotatorDescriptor.xml";
> 28:   private static String uimaDesc_ibmNee = path_ibmNeeDesc
> 29:                   + "NamedEntityAnnotatorDescriptor.xml";
> 30:   private static String uimaDesc_wikipPersonNee = path_srwAeDesc
> 31:                   + "WikipPersonNeeAnnotatorDescriptor.xml";
> 32:   // private LinkedList<PersonWikip> personList = null;
> 33:   private DMCHttpClient dhc = new DMCHttpClient();
> 34:
> 35:   public SRWikipediaMain() {
> 36:           // extract keio person from wikipedia
> 37:           LinkedList<PersonWikip> personList = 
> this.extractKeioPersonWikipedia();
> 38:
> 39:           // extract NEs using personList
> 40:           personList = this.extractNamedentity(personList);
> 41:
> 42:           // update 2 RDB
> 43:           this.update_SRW_db(personList);
> 44:   }
> 45:
> 46:   private void update_SRW_db(LinkedList<PersonWikip> persons) {
> 47:           // TODO Auto-generated method stub
> 48:   }
> 49:
> 50:   private LinkedList<PersonWikip> extractNamedentity(
> 51:                   LinkedList<PersonWikip> persons) {
> 52:
> 53:           LinkedList<PersonWikip> newList = new LinkedList<PersonWikip>();
> 54:           for (int i = 0; i < persons.size(); i++) {
> 55:                   PersonWikip person = persons.get(i);
> 56:
> 57:                   System.out.println("SRWikipediaMain:extractNE: "
> 58:                                   + person.getPersonname().getLex());
> 59:
> 60:                   person = this.extractNeeFromWebdoc(person, 
> person.getUrl_wikip());
> 61:
> 62:                   // 2007nov19/130s/for saving memory
> 63:                   // newList.add(person);
> 64:                   person = null;
> 65:           }
> 66:           return newList;
> 67:   }
> 68:
> 69:   private PersonWikip extractNeeFromWebdoc(PersonWikip person, String 
> uri) {
> 70:
> 71:           String htmlBody = null;
> 72:           try {
> 73:                   htmlBody = this.dhc.doGetBody(uri);
> 74:           } catch (IllegalArgumentException e) {
> 75:                   // occur when the person name is not enclosed by <a> 
> tag.
> 76:           }
> 77:
> 78:           return this.extractNeeFromText(person, htmlBody);
> 79:   }
> 80:
> 81:   private PersonWikip extractNeeFromText(PersonWikip person, String
> htmlBody) {
> 82:           if (htmlBody != null) {
> 83:                   // read component descriptor for IBM NEE
> 84:                   XMLInputSource in = null;
> 85:                   try {
> 86:                           in = new 
> XMLInputSource(SRWikipediaMain.uimaDesc_ibmNee);
> 87:                   } catch (IOException e) {
> 88:                           e.printStackTrace();
> 89:                   }
> 90:
> 91:                   // give html to analysis engine
> 92:                   AnalysisEngine ae = 
> AnalysisEngineUtil.getAeInstance(in);
> 93:                   JCas jcas = AnalysisEngineUtil
> 94:                                   .analyzeByAnalysisEngine(ae, htmlBody);
> 95:
> 96:                   // set firm
> 97:                   System.out.print(" - firm: ");
> 98:
> 99:                   FSIndex index = 
> jcas.getJFSIndexRepository().getAnnotationIndex(
> 100:                                  Company.type);
> 101:                  FSIterator compIter = index.iterator();
> 102:
> 103:                  StringArray compArray = new StringArray(jcas, 
> index.size());
> 104:                  int num_company = 0;
> 105:                  while (compIter.hasNext()) {
> 106:                          Company annot = (Company) compIter.next();
> 107:                          compArray.set(num_company, annot.getLex());
> 108:                          // TODO remove redundunt values
> 109:
> 110:                          num_company++;
> 111:                  }
> 112:                  person.setCompany_related(compArray);
> 113:                  System.out.print(person.getCompany_related().toArray() 
> + " ");
> 114:
> 115:                  // set org
> 116:                  System.out.println("");
> 117:                  System.out.print(" - org: ");
> 118:
> 119:                  FSIterator orgIter = jcas.getJFSIndexRepository()
> 120:                                  
> .getAnnotationIndex(Org.type).iterator();
> 121:                  StringArray orgArray = new StringArray(jcas, 100);
> 122:                  int order_org = 0;
> 123:                  while (orgIter.hasNext()) {
> 124:                          Org annot = (Org) orgIter.next();
> 125:                          orgArray.set(order_org, annot.getLex());
> 126:
> 127:                          order_org++;
> 128:                  }
> 129:                  person.setCompany_related(orgArray);
> 130:                  System.out.print(person.getOrg_related().toArray() + " 
> ");
> 131:
> 132:                  // read component descriptor for WikipPerson NEE
> 133:                  in = null;
> 134:                  jcas = null;
> 135:                  try {
> 136:                          in = new 
> XMLInputSource(SRWikipediaMain.uimaDesc_wikipPersonNee);
> 137:                  } catch (IOException e) {
> 138:                          e.printStackTrace();
> 139:                  }
> 140:                  // give html to analysis engine
> 141:                  jcas = AnalysisEngineUtil.analyzeByAnalysisEngine(
> 142:                                  AnalysisEngineUtil.getAeInstance(in), 
> htmlBody);
> 143:
> 144:                  // set faculty
> 145:                  // set schoold graduated
> 146:                  // set pref. candidate from
> 147:                  System.out.println("");
> 148:          }
> 149:
> 150:          // TODO write 2 data base
> 151:
> 152:          return person;
> 153:  }
> 154:
> 155:  private String url_keiopersons_wikipedia =
> "http://ja.wikipedia.org/wiki/%E6%85%B6%E6%87%89%E7%BE%A9%E5%A1%BE%E5%A4%A7%E5%AD%A6%E3%81%AE%E4%BA%BA%E7%89%A9%E4%B8%80%E8%A6%A7";;
> 156:
> 157:  private LinkedList<PersonWikip> extractKeioPersonWikipedia() {
> 158:
> 159:          XMLInputSource in = null;
> 160:          try {
> 161:                  in = new 
> XMLInputSource(SRWikipediaMain.uimaDesc_personWikip);
> 162:          } catch (IOException e) {
> 163:                  e.printStackTrace();
> 164:          }
> 165:          // create a JCas, given an Analysis Engine (ae)
> 166:          AnalysisEngine ae = AnalysisEngineUtil.getAeInstance(in);
> 167:          String docBody = 
> this.dhc.doGetBody(this.url_keiopersons_wikipedia);
> 168:          JCas jcas = AnalysisEngineUtil.analyzeByAnalysisEngine(ae, 
> docBody);
> 169:
> 170:          LinkedList<PersonWikip> personList = 
> this.createPersonList(jcas);
> 171:          System.out.println("extractKeioPersonWikipedia: " + 
> personList.size());
> 172:
> 173:          // 2007nov15/130s/this caused fatal error!!!
> 174:          // jcas.reset();
> 175:
> 176:          return personList;
> 177:  }
> 178:
> 179:  private LinkedList<PersonWikip> createPersonList(JCas jcas) {
> 180:          LinkedList<PersonWikip> persons = new LinkedList<PersonWikip>();
> 181:
> 182:          FSIterator personIter = jcas.getJFSIndexRepository()
> 183:                          
> .getAnnotationIndex(PersonWikip.type).iterator();
> 184:          int counter = 0;
> 185:          while (personIter.hasNext()) {
> 186:                  PersonWikip p = (PersonWikip) personIter.next();
> 187:                  persons.add(p);
> 188:                  System.out
> 189:                                  
> .println("SRWikipediaMain:createPersonList: "
> 190:                                                  + 
> p.getPersonname().getLex() + ", URL: "
> 191:                                                  + p.getUrl_wikip());
> 192:                  counter++;
> 193:          }
> 194:          return persons;
> 195:  }
> 196:
> 197:  public static void main(String[] args) {
> 198:          new SRWikipediaMain();
> 199:  }
> 200: }
> </SRWikipediaMain.java>
> 
> Isaac
> 
> 
> On 11/20/07, Marshall Schor <[EMAIL PROTECTED]> wrote:
>> Can you please post the stack trace so we can see the nesting of method
>> calls leading to the null pointer exception?
>>
>> Thanks. -Marshall
>>
>> ISAO Isaac Saito wrote:
>>> Thilo,
>>>
>>> Thank you for the comment.
>>> I took following steps but the result is the same.
>>>
>>> 1. set /uimaj-2.2.0-incubating-bin/apache-uima/lib as a classpath
>>> 2. clean compiled classes and build
>>>
>>> any comments will be appreciated.
>>>
>>> Isaac
>>>
>>> On 11/20/07, Thilo Goetz <[EMAIL PROTECTED]> wrote:
>>>
>>>> Hi,
>>>>
>>>> this looks like you may be referring to an old version
>>>> of your JCas classes in your classpath.  The invocation
>>>> exception may be caused because the old version of the
>>>> Person class doesn't have the company feature yet.  Please
>>>> check your classpath and make sure the classes you run
>>>> with are the same ones you compile against.
>>>>
>>>> --Thilo
>>>>
>>>> ISAO Isaac Saito wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> Could anybody has a solution to the problem I describe below?
>>>>>
>>>>> Thanks in adv,
>>>>>  Isaac
>>>>>
>>>>>
>>>>> - What I Want:
>>>>>  set an array of String as a feature and get them
>>>>>
>>>>>
>>>>> - Phenomenon:
>>>>>
>>>>>  -- Exception occurs and application terminates after executing
>>>>> System.out.print(person.getCompany_related().toArray())
>>>>>
>>>>>  Exception in thread "main" java.lang.NullPointerException
>>>>>       at 
>>>>> org.apache.uima.cas.impl.CASImpl.ll_getFSForRef(CASImpl.java:2745)
>>>>>
>>>>>
>>>>>  -- the content of variable shows "com.sun.jdi.InvocationException
>>>>> occurred invoking method." after executing
>>>>> person.setCompany_related(compArray).
>>>>>   This can be seen by using eclipse' debug mode.
>>>>>
>>>>>
>>>>> - java code
>>>>>
>>>>> private void extractNeeFromText(String descpath, String htmlBody,
>>>>> Annotation person) {
>>>>>       XMLInputSource in = null;
>>>>>       try {
>>>>>               in = new XMLInputSource(descpath);
>>>>>       } catch (IOException e) {
>>>>>               e.printStackTrace();
>>>>>       }
>>>>>       AnalysisEngine ae = AnalysisEngineUtil.getAeInstance(in);
>>>>>       ResourceSpecifier specifier = null;
>>>>>       AnalysisEngine ae = null;
>>>>>       try {
>>>>>               specifier = 
>>>>> UIMAFramework.getXMLParser().parseResourceSpecifier(
>>>>>                                       desc);
>>>>>               ae = UIMAFramework.produceAnalysisEngine(specifier);
>>>>>       } catch (InvalidXMLException e) {
>>>>>               e.printStackTrace();
>>>>>       } catch (ResourceInitializationException e) {
>>>>>               e.printStackTrace();
>>>>>       }
>>>>>               JCas jcas = AnalysisEngineUtil.analyzeByAnalysisEngine(ae, 
>>>>> htmlBody);
>>>>>       FSIndex index = jcas.getJFSIndexRepository().getAnnotationIndex(
>>>>>                               Company.type);
>>>>>       StringArray compArray = new StringArray(jcas, index.size());
>>>>>       FSIterator compIter = index.iterator();
>>>>>       int num_company = 0;
>>>>>       while (compIter.hasNext()) {
>>>>>               Company annot = (Company) compIter.next();
>>>>>               compArray.set(num_company, annot.getLex());
>>>>>               // TODO remove redundunt values
>>>>>               num_company++;
>>>>>       }
>>>>>       person.setCompany_related(compArray);
>>>>>       System.out.println(person.getCompany_related().toArray());
>>>>> }
>>>>>
>>>>>
>>>>> - type system desctiption
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>> <typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier";>
>>>>> <name>Person-Wikip_TypeSystemDescriptor</name>
>>>>> <description></description>
>>>>> <version>1.0</version>
>>>>> <vendor>ISAAC</vendor>
>>>>> <imports>
>>>>> <import 
>>>>> location="../../tae_nee_apacheUima/desc/NamedEntityTypeSystemDescriptor.xml"/>
>>>>> </imports>
>>>>> <types>
>>>>> <typeDescription>
>>>>> <name>jp.ac.keio.dmc.context.srw.types.PersonWikip</name>
>>>>> <description>w</description>
>>>>> <supertypeName>uima.tcas.Annotation</supertypeName>
>>>>> <features>
>>>>> <featureDescription>
>>>>> <name>company_related</name>
>>>>> <description></description>
>>>>> <rangeTypeName>uima.cas.StringArray</rangeTypeName>
>>>>> </featureDescription>
>>>>> </features>
>>>>> </typeDescription>
>>>>> </types>
>>>>> </typeSystemDescription>
>>>>>
>>>>>
>>>>> - Referred conversation
>>>>> http://www.ibm.com/developerworks/forums/thread.jspa?threadID=129534
>>>>>
>>>
>>>

Reply via email to