NullPointerException几天都没解决的问题 那一定是digester这个对象为null了你打印一下看看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 多谢v38,刚打印了一下,不为空啊:“org.apache.commons.digester.Digester@18c458”,郁闷啊 digester.parse可能调用了in的某个getter,而那个getter返回值为null能查到digester.parse的源码吗? 可能是,digester.parse源码找不到,但digester.parse要用到SalesConfig.java和DaoConfig.java这两个类,这两个类和配置文件中的<config>和子元素<dao>对应:package cn.hsales.sales.config;import org.apache.commons.lang.builder.ToStringBuilder;import cn.hsales.sales.exception.SalesException;/** * DAO配置信息类 */public class DaoConfig { private String id; private String type; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } private Object instance; /** * 得到配置的对象的实例 */ public Object getInstance() { if( null!=instance ) return instance; try { Class cls = Class.forName( getType() ); instance = cls.newInstance(); return instance; } catch( Exception ex ) { throw new SalesException( "Couldn't find class:" + getType() ); } } public String toString() { return ToStringBuilder.reflectionToString( this ); }}package cn.hsales.sales.config;import java.util.Hashtable;import org.apache.commons.lang.builder.ToStringBuilder;import cn.hsales.sales.exception.SalesException;/** * 系统配置信息类 */public class SalesConfig { public static Hashtable<String, DaoConfig> beans; /** * 构造函数 */ public void salesConfig() { beans = new Hashtable(); } /** * 增加一个BeanConfig对象 * @param bean */ public void addDao(DaoConfig bean) { beans.put(bean.getId(), bean); } /** * 得到一个DAO接口对象的实例 * @param name DAO接口对象的名称 * @return 指定DAO接口的实现类的实例 */ public Object getDao(String name) { DaoConfig config = (DaoConfig) beans.get(name); if (config == null) { throw new SalesException("Couldn't find the dao: " + name); } return config.getInstance(); } public String toString() { return ToStringBuilder.reflectionToString(this); }}这里要调用2次get,不知道哪里出错了,兄弟帮我看看,谢谢了 可以尝试单独调用 digester.parse(in); 看看是否还抛异常.如果还是NullPointerException,那就仔细分析下digester吧,看看声明的时候是否有问题;如果没有异常的话好象有点说不过去...呵呵 应该是digester.parse(in); 的parse里有空异常了。 单独调用digester.parse(in); 一样抛出异常,可能就象yeah920说的那样parse里有空异常了,可这种异常不好检测啊 ,,靠 我都想杀人了 把System.out.println(in);去掉试试 if (in != null){config = (SalesConfig)digester.parse(in);}有这样的判断了,应该是digester的问题,看看声明处是否正常(你的程序中的if()后面有没有{}啊...) 回复super000(水风烛月)老兄,把System.out.println(in);去掉异常行就跑到config = (SalesConfig)digester.parse(in);这行上,反正问题处在digester.parse(in)上回复moonest() 老兄,声明是这样的:Digester digester = new Digester(); digester.setValidating(false); // 设置处理规则 digester.addObjectCreate("config", "cn.hsales.sales.config.SalesConfig"); digester.addSetProperties("config"); digester.addObjectCreate("config/dao","cn.hsales.sales.config.DaoConfig"); digester.addSetProperties("config/dao"); digester.addSetNext("config/dao", "addDao","cn.hsales.sales.config.DaoConfig"); ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); //InputStream in = null; in = classLoader.getResourceAsStream("SalesConfig.xml"); System.out.println(in); SalesConfig config = null; try { if (in != null) if(digester.parse(in) != null) config = (SalesConfig)digester.parse(in);应该正常,另外if后面只有一个语句的话不要{}也一样啊 一开始异常不是出在config = (SalesConfig)digester.parse(in);?怎么把System.out.println(in);去掉异常行就跑到config = (SalesConfig)digester.parse(in);...如果System.out.println(in);出现异常那 in = classLoader.getResourceAsStream("SalesConfig.xml");这里就可能有问题啊,你监测下in的赋值if语句还是加上{}吧,这样看的怪怪的,跟个美女少穿件衣服似的. 哦,不好意思,看错,以为是System.out.println(digester.parse(in));呢,因为我测试digester.parse(in)时异常就跑到这一行了。System.out.println(in);在这里没影响吧,就是出现问题了才用System.out.println(in);打印看看in是否为null,结果in不为null,所以问题出在digester.parse(in),但就是找不到!! 晕啊,找不到错误只好不用digester和配置文件了,先用别的,以后找到问题后再 改过来!! 路线查询系统 关于hql多表查询问题 java 压缩文件 应用服务器与WEB服务器 关于hibernate中用ant来显示后台信息 Struts新手问题 hibernate+c3p0 连接as400 db2 锁表问题 问一个Struts标签的问题 修改struts源码解决ApplicationResources.properties里不能直接用中文 产生一个凭证号的问题:请指教!100分相送,在线等!解决马上给分! NullPointerException几天都没解决的问题 请教一个关于sprint的jdbcTemplate问题?
能查到digester.parse的源码吗?
package cn.hsales.sales.config;import org.apache.commons.lang.builder.ToStringBuilder;import cn.hsales.sales.exception.SalesException;/**
* DAO配置信息类
*/
public class DaoConfig { private String id;
private String type; public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
private Object instance; /**
* 得到配置的对象的实例
*/
public Object getInstance()
{
if( null!=instance ) return instance;
try
{
Class cls = Class.forName( getType() );
instance = cls.newInstance();
return instance;
}
catch( Exception ex )
{
throw new SalesException( "Couldn't find class:" + getType() );
}
}
public String toString()
{
return ToStringBuilder.reflectionToString( this );
}}package cn.hsales.sales.config;import java.util.Hashtable;import org.apache.commons.lang.builder.ToStringBuilder;import cn.hsales.sales.exception.SalesException;/**
* 系统配置信息类
*/
public class SalesConfig { public static Hashtable<String, DaoConfig> beans; /**
* 构造函数
*/
public void salesConfig()
{
beans = new Hashtable();
} /**
* 增加一个BeanConfig对象
* @param bean
*/
public void addDao(DaoConfig bean)
{
beans.put(bean.getId(), bean);
} /**
* 得到一个DAO接口对象的实例
* @param name DAO接口对象的名称
* @return 指定DAO接口的实现类的实例
*/
public Object getDao(String name)
{
DaoConfig config = (DaoConfig) beans.get(name); if (config == null)
{
throw new SalesException("Couldn't find the dao: " + name);
} return config.getInstance();
} public String toString()
{
return ToStringBuilder.reflectionToString(this);
}
}这里要调用2次get,不知道哪里出错了,兄弟帮我看看,谢谢了
有这样的判断了,应该是digester的问题,看看声明处是否正常(你的程序中的if()后面有没有{}啊...)
Digester digester = new Digester();
digester.setValidating(false); // 设置处理规则
digester.addObjectCreate("config", "cn.hsales.sales.config.SalesConfig");
digester.addSetProperties("config"); digester.addObjectCreate("config/dao","cn.hsales.sales.config.DaoConfig");
digester.addSetProperties("config/dao");
digester.addSetNext("config/dao", "addDao","cn.hsales.sales.config.DaoConfig"); ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
//InputStream in = null;
in = classLoader.getResourceAsStream("SalesConfig.xml");
System.out.println(in);
SalesConfig config = null;
try {
if (in != null)
if(digester.parse(in) != null)
config = (SalesConfig)digester.parse(in);
应该正常,另外if后面只有一个语句的话不要{}也一样啊
if语句还是加上{}吧,这样看的怪怪的,跟个美女少穿件衣服似的.