`

自己写的读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一起时两个都可以触发的~~~!

分享到:
评论

相关推荐

    Spring Boot多模块配置文件读取

    在Spring Boot应用中,多模块配置文件的读取是一个重要的实践,它有助于提高代码的可维护性和模块化。本文将详细探讨如何在Spring Boot的多模块项目中管理和使用不同的配置文件,以实现低耦合的设计。 首先,了解...

    spring mvc 读取配置文件

    首先,Spring MVC中的配置文件通常是指XML配置文件,如`applicationContext.xml`或`servlet-context.xml`,它们位于`src/main/resources`目录下。这些文件包含了Spring MVC应用的所有组件配置,如控制器(Controller...

    Spring项目application.xml配置文件加解密

    在Spring项目中,`application.xml`配置文件是核心配置组件,它包含了应用的bean定义、数据源、事务管理等重要信息。为了保护敏感信息,如数据库连接字符串、API密钥等,我们需要对这些配置进行加密。本文将详细介绍...

    Spring3.0 配置文件中加载Properties文件的小例子

    本篇将详细讲解如何在Spring 3.0的配置文件中加载Properties文件,以便在运行时动态获取和使用这些配置。 首先,我们需要一个Properties文件,例如`application.properties`,它通常放在项目的类路径根目录下。这个...

    index(xml配置7.2.1).rar

    通常在IT领域,尤其是Java开发中,XML配置文件被广泛用于存储和管理应用程序的配置信息,如Spring框架、MyBatis等。XML因其结构化和可读性强的特点,成为编写配置文件的理想选择。 描述提到“包含配置xml的基础开发...

    【20210611】Springboot开发系统支持与配置文件.pdf

    20210611的SpringBoot开发系统支持与配置文件主要关注了SpringBoot项目的依赖管理和常用组件的集成。 首先,SpringBoot的核心在于其自动配置特性。通过引入特定的起步依赖(starters),如`spring-boot-starter-web`...

    配置文件jar包

    首先,配置文件通常以文本格式(如XML、JSON或properties)存在,其中包含了应用的环境特定信息。例如,数据库连接字符串、服务器地址、API密钥等。这些信息通常不应包含在源代码中,因为它们可能因环境不同而变化,...

    idea读取YML配置文件readApplication

    在Spring Boot项目中,配置文件通常使用YAML(YAML Ain't Markup Language)格式,因为其简洁易读的特性。本文将深入讲解如何在Idea中读取YML配置文件,特别是针对刚接触Gradle的开发者。 首先,我们需要了解YML...

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

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

    JAVA配置文件编写说明文档

    首先,Java配置文件通常以`.properties`或`.xml`格式存在。`.properties`文件是键值对的形式,适用于简单的配置,而`.xml`文件则结构更清晰,适合复杂配置。例如,`log4j.properties`用于配置日志系统,`application...

    配置好的maven 3.6.3配置文件以及环境变量设置教程

    "settings.xml"是实际的配置文件,可以对照上述说明进行编辑和修改。请根据自身需求调整源的顺序,以选择最快的下载通道。 总的来说,正确配置Maven和环境变量对于Java开发至关重要。这不仅可以提高项目构建速度,...

    springboot 在xml里读取yml的配置信息的示例代码

    总的来说,Spring Boot允许开发者在XML配置文件中引用YAML配置信息,这为那些需要结合传统XML配置的应用提供了便利。不过,随着Spring Boot的发展,越来越多的配置可以通过Java配置和自动配置来实现,这使得代码更加...

    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里更为简单的声明性事务配置 ...

    如何解决springboot读取配置文件的中文乱码问题

    在Spring Boot应用中,配置文件通常使用`application.properties`或`application.yml`来定义应用程序的配置参数。然而,当配置文件包含中文字符时,可能会遇到读取时出现乱码的问题。这个问题主要是由于文件编码不...

    Spring Boot 面试必备手册

    Spring Boot 并不排斥 XML 配置,开发者可以通过 `@ImportResource` 注解引入 XML 配置文件。对于复杂的微服务架构,比如使用 Spring Cloud 时,`bootstrap.properties` 配置文件就显得尤为重要,因为它主要用于加载...

    JAVA连接字符串到配置文件

    接着,通过`getProperty`方法获取配置文件中的属性值,并打印出来。 值得注意的是,为了确保良好的编程习惯和避免资源泄漏,我们使用了try-catch-finally语句块来处理可能出现的异常,并确保文件流在使用后得到关闭...

    发送Post请求,内容格式为xml,并获取响应内容

    在IT领域,特别是Web开发与服务交互中,发送POST请求并处理XML格式的数据是一项常见的需求。根据提供的文件信息,我们可以深入解析如何使用Java语言通过Apache HttpClient库来实现这一功能。 ### 发送POST请求并...

    Spring环境搭建

    5. **配置Spring**:创建一个XML配置文件(如`applicationContext.xml`),定义Bean的声明及依赖关系。也可以使用Java配置类,这更符合现代Spring的编程风格。 6. **启动Spring**:在你的主程序中,你需要创建一个`...

    Java中spring读取配置文件的几种方法示例

    `ClassPathXmlApplicationContext`是Spring提供的一个实现`ApplicationContext`接口的类,它负责加载指定路径下的XML配置文件,解析文件中的Bean定义,并实例化Bean。在这个例子中,我们通过调用`getBean`方法获取了...

Global site tag (gtag.js) - Google Analytics