package XXX.ImportXML.impl;import java.util.*;import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;import XXX.ImportXML.dao.ImportXMLDAO;
import XXX.ImportXML.factory.ImportXMLSessionFactory;
import XXX.XML.GetInfoXML;
import XXX.XML.vo.Newtracking;public class ImportXMLIpml implements ImportXMLDAO {
private Session session; public void ImportXMLImpl() {
this.session = ImportXMLSessionFactory.getSession();
}
public boolean isImport(Newtracking newtracking) {
boolean flag = false;
Transaction tx = session.beginTransaction();
try {
String xmlpath = newtracking.getXmlpath();
GetInfoXML getinfoxml = new GetInfoXML();
Map language = getinfoxml.getInfoXML(xmlpath);
Map info = (Map)language.get("info");
Map LL = (Map)language.get("LC");
......
......
......
......
......
......
session.save(newtracking);
tx.commit();
flag = true;

catch (HibernateException e) {
e.printStackTrace();
tx.rollback();
flag = false;
}
finally {
this.session.close();
}
return flag;
}
}
下面是SessionFactory
package XXX.ImportXML.factory;import org.hibernate.Session;
import org.hibernate.cfg.Configuration;public class ImportXMLSessionFactory {
public static Session getSession(){
Session session = null;
session = new Configuration().configure().
buildSessionFactory().openSession();
return session;
}
}在Transaction tx = session.beginTransaction();就有问题了,报java.lang.NullPointerExceptionjava.lang.NullPointerException
        at Bei.Google.PM.ImportXML.impl.ImportXMLIpml.isImport(ImportXMLIpml.jav
a:23)
        at cn.Bei.Google.PM.struts.action.ImportXMLAction.execute(ImportXMLActio
n.java:48)
        at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
tProcessor.java:419)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:224)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:119
4)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:286)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso
r.java:857)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr
ocess(Http11AprProtocol.java:565)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:15
09)
        at java.lang.Thread.run(Unknown Source)
aaaaaaaaaaaaaaaaa
java.lang.NullPointerException
        at Bei.Google.PM.ImportXML.impl.ImportXMLIpml.isImport(ImportXMLIpml.jav
a:23)
        at cn.Bei.Google.PM.struts.action.ImportXMLAction.execute(ImportXMLActio
n.java:48)
        at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
tProcessor.java:419)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:224)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:119
4)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:286)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso
r.java:857)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr
ocess(Http11AprProtocol.java:565)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:15
09)
        at java.lang.Thread.run(Unknown Source)请XD们看看哪里的问题?

解决方案 »

  1.   


    public void ImportXMLImpl() {
    this.session = ImportXMLSessionFactory.getSession();

    这个方法没有调用,session是nul,报空指针异常是当然的
      

  2.   

    恩,问题是出在这里,但是理解问题,我笔误错误加上了void,去掉就好了
      

  3.   

    public void ImportXMLImpl() { 
    this.session = ImportXMLSessionFactory.getSession(); 
    } void 要去掉才是构造器,有void只是一个普通的方法,需要调用才能 执行里面的方法体
      

  4.   

    session初始化失败或根本没初始化
      

  5.   

    呵呵,先想了想,再问
    是这样的,我开始把部分代码省略了,现在贴上了。问题在写VO那段,从这行while (LL.get("fil").equals(("fil")))开始报java.lang.NullPointerException,从Map中是可以读取出value的,问题应该出在写VO上,我曾经想用Foreach,但是无法把map的value与VO的Set方法map起来。我朋友曾建议我把map和VO间做一个转换类,但是我有些想不出如何转换,没有这经验,希望XD们说说
    package XXX.ImportXML.impl;import java.util.*;import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.Transaction;import XXX.ImportXML.dao.ImportXMLDAO;
    import XXX.ImportXML.factory.ImportXMLSessionFactory;
    import XXX.XML.GetInfoXML;
    import XXX.XML.vo.Newtracking;public class ImportXMLIpml implements ImportXMLDAO {
    private Session session; public ImportXMLImpl() {
    this.session = ImportXMLSessionFactory.getSession();
    }
    public boolean isImport(Newtracking newtracking) {
    boolean flag = false;
    Transaction tx = session.beginTransaction();
    try {
    String xmlpath = newtracking.getXmlpath();
    GetInfoXML getinfoxml = new GetInfoXML();
    Map language = getinfoxml.getInfoXML(xmlpath);
    Map info = (Map)language.get("info");
    Map LL = (Map)language.get("LC");
    for(int i = 0; i<language.size(); i++){
    while (LL.get("fil").equals(("fil"))) {
    newtracking.setFilvendor("aaa");
    }
    while (LL.get("id").equals("id")) {
    newtracking.setFilvendor("bbb");
    }
    while (LL.get("in").equals("in")) {
    newtracking.setFilvendor("bbb");
    }
    while (LL.get("ja").equals("ja")) {
    newtracking.setFilvendor("ccc");
    }
    while (LL.get("ko").equals("ko")) {
    newtracking.setFilvendor("ddd");
            }
    while (LL.get("ms").equals("ms")) {
    newtracking.setFilvendor("fff");
    }
    while (LL.get("th").equals("th")) {
    newtracking.setFilvendor("eee");
    }
    while (LL.get("vi").equals("vi")) {
    newtracking.setFilvendor("ggg");
    }
    while (LL.get("zh-CN").equals("zh-CN")) {
    newtracking.setFilvendor("hhh");
    }
    while (LL.get("zh-TW").equals("zh-TW")) {
    newtracking.setFilvendor("iii");
    }
    while (LL.get("zh-HK").equals("zh-HK")) {
    newtracking.setFilvendor("jjj");
    }
    }
    session.save(newtracking);
    tx.commit();
    flag = true;

    catch (HibernateException e) {
    e.printStackTrace();
    tx.rollback();
    flag = false;
    }
    finally {
    this.session.close();
    }
    return flag;
    }
    }
      

  6.   

    "fil".equals(LL.get("fil"))
    我建议这样使用equals,可以避免LL.get("fil")为null时出现的空指针异常
      

  7.   

    我没有讲清楚,现在情况是不报NullPointerException,一运行就tomcat占据100%的CPU,无法写VO,无法操作数据库,有什么其它办法写VO吗?
      

  8.   

    你用的while语句,又没有限定什么时候结束,当然会一直执行下去,死循环了
      

  9.   

    没有i++,就加个break吧,加上以后出现下面这个问题
    org.hibernate.id.IdentifierGenerationException: ids for this class must be man
    lly assigned before calling save(): XXX.XML.vo.Newtracking
          at org.hibernate.id.Assigned.generate(Assigned.java:33)
          at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId
    bstractSaveEventListener.java:91)
          at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGene
    tedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
          at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrR
    uestedId(DefaultSaveEventListener.java:33)
          at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTran
    ent(DefaultSaveOrUpdateEventListener.java:175)
          at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(
    faultSaveEventListener.java:27)
          at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpda
    (DefaultSaveOrUpdateEventListener.java:70)
          at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
          at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
          at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
          at XXX.ImportXML.impl.ImportXMLIpml.isImport(ImportXMLIpml.jav
    84)
          at cn.XXX.struts.action.ImportXMLAction.execute(ImportXMLActio
    java:48)
          at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
    rocessor.java:419)
          at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
    :224)
          at org.apache.struts.action.ActionServlet.process(ActionServlet.java:119      at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)      at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    ationFilterChain.java:290)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    terChain.java:206)
          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
    ve.java:233)
          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
    ve.java:191)
          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
    a:128)
          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
    a:102)
          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
    .java:109)
          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
    286)
          at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso
    java:857)
          at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr
    ess(Http11AprProtocol.java:565)
          at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:15
    )
          at java.lang.Thread.run(Unknown Source)
      

  10.   

    我在每个while循环内最后加上了break,又报错误了
    org.hibernate.id.IdentifierGenerationException: ids for this class must be man
    ually assigned before calling save(): XXX.XML.vo.Newtracking
            at org.hibernate.id.Assigned.generate(Assigned.java:33)
            at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId
    (AbstractSaveEventListener.java:91)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGene
    ratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
            at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrR
    equestedId(DefaultSaveEventListener.java:33)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTran
    sient(DefaultSaveOrUpdateEventListener.java:175)
            at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(
    DefaultSaveEventListener.java:27)
            at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpda
    te(DefaultSaveOrUpdateEventListener.java:70)
            at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
            at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
            at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
            at XXX.ImportXML.impl.ImportXMLIpml.isImport(ImportXMLIpml.jav
    a:84)
            at cn.XXX.struts.action.ImportXMLAction.execute(ImportXMLActio
    n.java:48)
            at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
    tProcessor.java:419)
            at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
    va:224)
            at org.apache.struts.action.ActionServlet.process(ActionServlet.java:119
    4)
            at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
    alve.java:233)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
    alve.java:191)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
    ava:128)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
    ava:102)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
    ve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
    a:286)
            at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso
    r.java:857)
            at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr
    ocess(Http11AprProtocol.java:565)
            at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:15
    09)
            at java.lang.Thread.run(Unknown Source)