`

自己写的读xml配置文件获取变量(类似spring)中遇到的问题

阅读更多
1.
java.lang.IllegalAccessException: Class com.zhao.config.BeanConfig can not access a member of class com.zhao.object.Contact with modifiers "private"
at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
at java.lang.reflect.Field.doSecurityCheck(Unknown Source)
at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
at java.lang.reflect.Field.set(Unknown Source)
at com.zhao.config.BeanConfig.makeBean(BeanConfig.java:98)
at com.zhao.config.BeanConfig.makeBeans(BeanConfig.java:155)
at com.zhao.config.BeanConfig.parse(BeanConfig.java:59)
at com.zhao.config.BeanConfig.<init>(BeanConfig.java:27)
at com.zhao.test.TestRef.main(TestRef.java:12)
java.lang.IllegalAccessException: Class com.zhao.config.BeanConfig can not access a member of class com.zhao.object.Person with modifiers "private"
at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
at java.lang.reflect.Field.doSecurityCheck(Unknown Source)
at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
at java.lang.reflect.Field.set(Unknown Source)
at com.zhao.config.BeanConfig.makeBean(BeanConfig.java:91)contact:

at com.zhao.config.BeanConfig.makeBeans(BeanConfig.java:155)
at com.zhao.config.BeanConfig.parse(BeanConfig.java:59)
at com.zhao.config.BeanConfig.<init>(BeanConfig.java:27)
at com.zhao.test.TestRef.main(TestRef.java:12)
java.lang.IllegalAccessException: Class com.zhao.config.BeanConfig can not access a member of class com.zhao.object.Student with modifiers "private"
at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
at java.lang.reflect.Field.doSecurityCheck(Unknown Source)
at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
at java.lang.reflect.Field.set(Unknown Source)
at com.zhao.config.BeanConfig.makeBean(BeanConfig.java:98)
at com.zhao.config.BeanConfig.makeBeans(BeanConfig.java:155)
at com.zhao.config.BeanConfig.parse(BeanConfig.java:59)
at com.zhao.config.BeanConfig.<init>(BeanConfig.java:27)
at com.zhao.test.TestRef.main(TestRef.java:12)
Exception in thread "main" java.lang.NullPointerException
at com.zhao.test.TestRef.main(TestRef.java:19)

/////////////////////////
Field field = cls.getDeclaredField(key);
------------------>
Field field = cls.getDeclaredField(key);

if(!field.isAccessible())
{
field.setAccessible(true);
}

private 的属性,反射修改要设置它为可修改先

2.
java.lang.NumberFormatException

//////////////////
public void makeBeans(HashMap beanClass, HashMap beanProperties,
HashMap beanFlat) {

for (Iterator iter = beanClass.keySet().iterator(); iter.hasNext();)
{
String id = (String)iter.next();
String className = (String)beanClass.get(id);
Properties porp = (Properties)beanProperties.get("id");
HashMap map = (HashMap)beanFlat.get("id");

makeBean(id,className,porp,map);
}


}

--------------------------->

public void makeBeans(HashMap beanClass, HashMap beanProperties,
HashMap beanFlat) {

for (Iterator iter = beanClass.keySet().iterator(); iter.hasNext();)
{
String id = (String)iter.next();
String className = (String)beanClass.get(id);
Properties porp = (Properties)beanProperties.get(id);
HashMap map = (HashMap)beanFlat.get(id);

makeBean(id,className,porp,map);
}


}

习惯性地get中都写成了""的字符串

3.
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
currentValue.delete(0, currentValue.length());
currentValue.append(ch, start, length);
System.out.println("currentValue:"+currentValue+"value");
propertyMsg.setValue(new String(currentValue.toString()));
}

//////////////////////

currentValue:
value
currentValue:
value
currentValue:
value
currentValue:
      value
currentValue:123456value
currentValue:
value
currentValue:
value
currentValue:
              value
currentValue:gzvalue
currentValue:
        value
currentValue:
value
currentValue:

    value
currentValue:
        value
currentValue:
              value
currentValue:1value
currentValue:
        value
currentValue:
        value
currentValue:
              value
currentValue:zhaovalue
currentValue:
        value
currentValue:
        value
currentValue:
              value
currentValue:123value
currentValue:
        value
currentValue:
    value
currentValue:

     value
currentValue:
        value
currentValue:
              value
currentValue:1value
currentValue:
        value
currentValue:
        value
currentValue:
              value
currentValue:becknamvalue
currentValue:
        value
currentValue:
        value
currentValue:
              value
currentValue:0201value
currentValue:
        value
currentValue:
        value
currentValue:
              value
currentValue:
        value
currentValue:
    value
currentValue:
    value
currentValue:
value
val is:

contact:
java.lang.NumberFormatException: For input string: "
"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.valueOf(Unknown Source)
at com.zhao.config.BeanConfig.makeBean(BeanConfig.java:109)
at com.zhao.config.BeanConfig.makeBeans(BeanConfig.java:162)
at com.zhao.config.BeanConfig.parse(BeanConfig.java:59)
at com.zhao.config.BeanConfig.<init>(BeanConfig.java:27)
at com.zhao.test.TestRef.main(TestRef.java:12)
Exception in thread "main" java.lang.NullPointerException
at com.zhao.test.TestRef.main(TestRef.java:19)

可以看出public void characters(char[] ch, int start, int length)
是在有空字符串时也会触发的,如
<beans>(1)
<bean name="mybean">(2)
<property name="name">(3)
<value>goodname(4)</value>
</property>(5)
</bean>(6)
</beans>(7)
原以为这个函数只是会在(4)处会被执行,结果是(1)-->(7)都会被执行!
(1)-->(3),(5)-->(7)会出现长长的空字符串.
public void ignorableWhitespace(char ch[], int start, int length)
是在(1)-->(3),(5)-->(7)时会执行.
当有ignorableWhitespace和characters一起时两个都可以触发的~~~!

分享到:
评论

相关推荐

    SpringCloud集成Nacos实现配置管理.pdf

    这里,我们获取了配置文件中的 server.port 值,并将其赋值给 port 变量。 通过 Nacos,我们可以实现配置文件的集中管理、版本控制、灰度发布、回滚等功能,从而帮助开发者更好地管理微服务架构中的配置文件。 在...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 ...

    Spring选择题(含答案).doc

    5. Spring 配置文件中有如下代码片段: ”computerBean” class=”test.Computer”&gt; ”mainboard” ref=”chmainboard”/&gt; ”harddisk” ref=”xjharddisk”/&gt; 这段代码配置了一个名为 computerBean 的 Bean,...

    Spring 2.0 开发参考手册

    2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性...

    spring chm文档

    2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 ...

    ssh(structs,spring,hibernate)框架中的上传下载

     由于Spring通过代理Hibernate完成数据层的操作,所以原Hibernate的配置文件hibernate.cfg.xml的信息也转移到Spring的配置文件中:  代码 4 Spring中有关Hibernate的配置信息 1. 2. !-- 数据源的配置 //--> 3. ...

    spring security 参考手册中文版

    6.2.1 web.xml配置 50 6.2.2最小的配置 50 6.2.3表单和基本登录选项 52 设置默认的登录目的地 54 6.2.4注销处理 54 6.2.5使用其他身份验证提供程序 55 添加密码编码器 56 6.3高级Web功能 56 6.3.1记得我认证 56 ...

    spring基础

    而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。 因此在很多情况下,注释配置比 XML 配置更受欢迎,注释配置有进一步流行的趋势...

    spring in action英文版

     7.1 从JNDI中获取对象  7.1.1 使用传统的JNDI  7.1.2 代理JNDI对象  7.2 发送电子邮件  7.3 调度任务  7.3.1 使用Java Timer调度任务  7.3.2 使用Quartz调度器  7.3.3 按调度计划调用方法 ...

    tool-link-properties:读取项目配置文件

    将配置文件log4j2.xml和spring-logging.xml从项目目录转移至tool-logging的包目录。 更改“自定义变量”使用“远程配置读取”方式的规则,["dev","test","real"]远程读取,其他则配置文件读取。 更改“全局变量”jsp...

    JMS与Spring之一(用JmsTemplate同步收发消息)

    接着,需要创建app-context.xml文件,用于配置Spring的应用程序上下文。该文件的内容如下: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    asp.net知识库

    革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression Builders 怎么在ASP.NET 2.0中使用Membership asp.net 2.0-实现数据访问(1) ASP.NET 2.0 新特性 .NET 2.0里使用强类型数据创建...

    Java EE常用框架.xmind

    使用@configurationProperties和@Value注解来获取SpringBoot配置文件上的信息 使用@SpringBootTest来搭建测试环境,使用@AutoConfigueMockMVC类实现Mock http操作 热部署和热加载 热部署代表的是:我们不...

    java面试宝典

    202、用jdom解析xml文件时如何解决中文问题?如何解析? 48 203、编程用JAVA解析XML的方式. 49 204、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 51 205、EJB与JAVA BEAN的区别? 51 206、EJB的基本...

    jbpm4.4学习笔记

    4.5.2添加并制定配置文件 13 4.6 JBPM在MyEclipse画流程图时出现乱码: 14 5 核心API 14 5.1ProcessEngine 14 5.2RepositoryService 15 5.3ExecutionService 16 5.4TaskService 16 5.5ProcessDefinition 16 5.6...

    千方百计笔试题大全

    202、用jdom解析xml文件时如何解决中文问题?如何解析? 48 203、编程用JAVA解析XML的方式. 49 204、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 51 205、EJB与JAVA BEAN的区别? 51 206、EJB的基本...

    乐优商城.xmind

    自己做的乐优商城的XMIND文件,学习分享下。乐优商城 搭建父工程 pom.xml 添加依赖 springCloud mybatis启动器 通用Mapper启动器 mysql驱动 分页助手启动器 FastDFS客户端 其他配置 构建设置 环境设置 ...

    Activiti6.0教程例子下载

    3.3. Spring配置文件 这里配置了数据源、事务管理、流程引擎及几个必要的xxxService。这里数据源使用的是dbcp。数据库信息就配置成你自己本地数据库的信息,如果不会配置。 destroy-method="close"&gt; ...

Global site tag (gtag.js) - Google Analytics