Приложение Spring создает исключение ArrayIndexOutOfBoundsException - PullRequest
1 голос
/ 23 января 2020

Я новичок в программировании. когда я запускаю программу, программа выбрасывает исключение Array Index вне границ. используя пружину и java для программирования. Я создаю объект текстового редактора в основном классе. ошибка в системе конструктора SpellChecker из строки println. если я удаляю переменную 'a' из этой строки, код выполняется без ошибок. Основной класс:

public class MainApp {
public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("Bean.xml");

    TextEditor te = (TextEditor)context.getBean("textEditor");
    te.spellCheck();
}

}

Класс текстового редактора:

public class TextEditor {
private SpellChecker spellChecker;

public TextEditor(SpellChecker spellChecker){
    System.out.println("Inside TestEditor constructor");
    this.spellChecker=spellChecker;
}
public void spellCheck(){
    spellChecker.checkSpelling();
}

}

Класс проверки орфографии:

public class SpellChecker {
String a;

public SpellChecker(String a){
    this.a=a;
    System.out.println("Inside SpellChecker constructor " +a);
}

public void checkSpelling(){
    System.out.println("Inside checkSpelling");
}

}

XML:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="textEditor" class="TextEditor">
    <constructor-arg ref="spellChecker"/>
</bean>

<bean id="spellChecker" class="SpellChecker">
    <constructor-arg type="java.lang.String" value="raviya"/>
</bean>

трассировка стека:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 24882 out of bounds for length 1064
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer.inspectClass(LocalVariableTableParameterNameDiscoverer.java:112)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer.getParameterNames(LocalVariableTableParameterNameDiscoverer.java:86)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:188)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:888)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:600)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:140)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:888)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at MainApp.main(MainApp.java:6)

1 Ответ

0 голосов
/ 23 января 2020

Вы должны:

  1. Добавить метод setA() в SpellChecker class
  2. Измените XML, чтобы установить значение поля таким образом

  <bean id="spellChecker" class="SpellChecker">
       <property name="a" value="raviya"/>
   </bean>

Вы вводите значение в поле с помощью метода установки. Вы можете прочитать больше, например, здесь и в документации Spring .

...